├── .gitignore ├── README.md ├── fontlib_zh.cpp ├── fontlib_zh.h ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── softkeyboard ├── softkeyboard.pro ├── softkeyboarddlg.cpp ├── softkeyboarddlg.h └── softkeyboarddlg.ui /.gitignore: -------------------------------------------------------------------------------- 1 | # C++ objects and libs 2 | *.slo 3 | *.lo 4 | *.o 5 | *.a 6 | *.la 7 | *.lai 8 | *.so 9 | *.dll 10 | *.dylib 11 | 12 | # Qt-es 13 | object_script.*.Release 14 | object_script.*.Debug 15 | *_plugin_import.cpp 16 | /.qmake.cache 17 | /.qmake.stash 18 | *.pro.user 19 | *.pro.user.* 20 | *.qbs.user 21 | *.qbs.user.* 22 | *.moc 23 | moc_*.cpp 24 | moc_*.h 25 | qrc_*.cpp 26 | ui_*.h 27 | *.qmlc 28 | *.jsc 29 | Makefile* 30 | *build-* 31 | 32 | # Qt unit tests 33 | target_wrapper.* 34 | 35 | # QtCreator 36 | *.autosave 37 | 38 | # QtCreator Qml 39 | *.qmlproject.user 40 | *.qmlproject.user.* 41 | 42 | # QtCreator CMake 43 | CMakeLists.txt.user* 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QT_T9 2 | 3 | QT 源码实现九宫格输入法,支持中、英、数字、字符输入,可做嵌入式移植。 4 | -------------------------------------------------------------------------------- /fontlib_zh.cpp: -------------------------------------------------------------------------------- 1 | #include "fontlib_zh.h" 2 | #include 3 | #include 4 | 5 | bool strMatch(const char* str1, const char* str2) 6 | { 7 | bool retCode = false; 8 | do { 9 | if((strlen(str2) != strlen(str1))) { 10 | break; 11 | } 12 | if(strcmp(str1, str2) == 0) { 13 | retCode = true; 14 | } 15 | } while(0); 16 | return retCode;//两个字符串相等 17 | } 18 | 19 | int getMatchedPymb(unsigned char *strin, T9PY_IDX **matchlist) 20 | { 21 | T9PY_IDX *bestmatch;//最佳匹配 22 | int mcnt = 0; 23 | bestmatch = (T9PY_IDX*)&t9PY_index[0];//默认为a 的匹配 24 | int pyindexLen=sizeof(t9PY_index) / sizeof(t9PY_index[0]);//得到py 索引表的大小. 25 | for(int i = 0; i < pyindexLen; i++) 26 | { 27 | if(strMatch((const char* )strin, t9PY_index[i].T9)) 28 | { 29 | matchlist[mcnt++] = (T9PY_IDX*)&t9PY_index[i]; 30 | } 31 | } 32 | return mcnt;//返回匹配的个数 33 | } 34 | 35 | 36 | bool getMatchedPyEn(int nIn, char *matchstr) 37 | { 38 | int pyindexLen=sizeof(t9EN_index) / sizeof(t9EN_index[0]);//得到py 索引表的大小. 39 | for(int i = 0; i < pyindexLen; i++) 40 | { 41 | if(nIn == t9EN_index[i].key) 42 | { 43 | strcpy(matchstr, t9EN_index[i].Letter); 44 | return true; 45 | } 46 | } 47 | return false;//返回匹配的个数 48 | } 49 | -------------------------------------------------------------------------------- /fontlib_zh.h: -------------------------------------------------------------------------------- 1 | #ifndef FONTLIB_ZH_H 2 | #define FONTLIB_ZH_H 3 | //"拼音输入法汉字排列表" 4 | const unsigned char PY_mb_space [] = {""}; //来 自 :ST_M8._C N 5 | const unsigned char PY_mb_a[]= {"啊阿吖嗄腌锕呵安按爱暗埃"}; 6 | const unsigned char PY_mb_ai[]= {"爱埃碍矮挨唉哎哀皑癌蔼艾隘呆捱嗳嗌嫒瑷暧砹锿霭"}; 7 | const unsigned char PY_mb_an[]= {"安按暗岸案俺氨胺鞍谙埯揞犴庵桉铵鹌黯广厂"}; 8 | const unsigned char PY_mb_ang[]= {"昂肮盎"}; 9 | const unsigned char PY_mb_ao[]= {"凹奥敖熬翱袄傲懊澳嚣坳拗嗷岙廒遨媪骜獒聱螯鏊鳌鏖"}; 10 | const unsigned char PY_mb_b[]= {"不部本鲍柏毕变比并别百报步办表"}; 11 | const unsigned char PY_mb_ba[]= {"把八吧巴拔霸罢爸坝芭捌扒叭笆疤跋靶耙茇菝岜灞钯粑鲅魃"}; 12 | const unsigned char PY_mb_bai[]= {"百白败摆伯柏佰拜稗捭掰"}; 13 | const unsigned char PY_mb_ban[]= {"办半板班般版拌搬斑扳伴颁扮瓣绊阪坂钣瘢癍舨"}; 14 | const unsigned char PY_mb_bang[]= {"帮棒邦榜梆膀绑磅蚌镑傍谤蒡浜"}; 15 | const unsigned char PY_mb_bao[]= {"报保包剥薄胞暴宝饱抱爆炮堡刨苞褒雹豹鲍曝瀑葆孢煲鸨褓趵龅勹宀"}; 16 | const unsigned char PY_mb_bei[]= {"北被倍备背辈贝杯卑臂悲碑钡狈惫焙孛陂邶埤萆蓓呗悖碚鹎褙鐾鞴"}; 17 | const unsigned char PY_mb_ben[]= {"本奔苯笨夯畚坌贲锛"}; 18 | const unsigned char PY_mb_beng[]= {"泵崩蚌绷甭蹦迸嘣甏"}; 19 | const unsigned char PY_mb_bi []= {"比必避闭辟笔壁臂毕彼逼币鼻蔽秘鄙碧蓖毙毖庇痹敝弊陛拂泌匕俾埤芘荜荸萆薜吡哔狴庳愎滗濞弼妣婢嬖璧贲睥畀铋秕裨筚箅篦舭襞跸髀"}; 20 | const unsigned char PY_mb_bian[]= {"变边便编遍辩扁辨鞭贬卞辫匾弁苄忭汴缏飚煸砭碥窆褊蝙笾鳊彼岸"}; //来 自 :ST_M8._C N 21 | const unsigned char PY_mb_biao[]= {"表标彪膘勺婊骠杓飑飙镖镳瘭裱鳔髟"}; 22 | const unsigned char PY_mb_bie[]= {"别鳖憋瘪蹩"}; 23 | const unsigned char PY_mb_bin[]= {"宾彬斌濒滨摈傧豳缤玢槟殡膑镔髌鬓"}; 24 | const unsigned char PY_mb_bing[]= {"并病兵柄冰丙饼秉炳屏禀邴摒槟"}; 25 | const unsigned char PY_mb_bo[]= {"波播剥伯拨薄博勃驳玻泊柏卜菠钵搏铂箔帛舶脖膊渤魄孛亳啵饽檗掰擘礴钹鹁簸趵跛踣"}; 26 | const unsigned char PY_mb_bu[]= {"不部步布补捕埔卜堡哺埠簿怖卟逋瓿晡钚钸醭"}; 27 | const unsigned char PY_mb_c[]= {"产成程陈蔡曹崔楚褚池仇晁岑从此处车场传厂才次查"}; 28 | const unsigned char PY_mb_ca[]= {"擦拆嚓礤"}; 29 | const unsigned char PY_mb_cai[]= {"采才材菜财裁彩猜睬踩蔡"}; 30 | const unsigned char PY_mb_can[]= {"参残蚕灿餐惭惨孱骖璨粲黪"}; 31 | const unsigned char PY_mb_cang[]= {"藏仓苍舱沧"}; 32 | const unsigned char PY_mb_cao[]= {"草槽操糙曹嘈漕螬艚"}; 33 | const unsigned char PY_mb_ce[]= {"测策侧册厕恻"}; 34 | const unsigned char PY_mb_cen[]= {"参岑涔"}; 35 | const unsigned char PY_mb_ceng[]= {"层曾蹭噌"}; 36 | const unsigned char PY_mb_ch[]= {"差长常昌超陈程城持重出初"}; 37 | const unsigned char PY_mb_cha[]= {"查差插察茶叉茬碴搽岔诧刹喳嚓猹馇汊姹杈楂槎檫锸镲衩"}; 38 | const unsigned char PY_mb_chai[]= {"差柴拆豺侪钗瘥虿"}; 39 | const unsigned char PY_mb_chan[]= {"产单铲阐搀掺蝉馋谗缠颤冁谄蒇廛忏潺澶孱羼婵骣觇禅镡蟾躔"}; 40 | const unsigned char PY_mb_chang[]= {"长常场厂唱肠昌倡偿畅猖尝敞裳倘伥鬯苌菖徜怅惝阊娼嫦昶氅鲳"}; 41 | const unsigned char PY_mb_chao[]= {"朝超潮巢抄钞嘲吵炒绰剿怊晁焯耖"}; 42 | const unsigned char PY_mb_che[]= {"车彻尺撤扯掣澈坼砗"}; 43 | const unsigned char PY_mb_chen[]= {"陈沉称衬尘臣晨沈郴辰忱趁伧谌谶抻嗔宸琛榇碜龀"}; 44 | const unsigned char PY_mb_cheng[]= {"成程称城承乘呈盛撑诚橙惩澄逞骋秤丞埕噌枨柽塍瞠铖铛裎蛏酲"}; 45 | const unsigned char PY_mb_chi[]= {"持尺齿吃赤池迟翅斥耻痴匙弛驰侈炽傺坻墀茌叱哧啻嗤彳饬媸敕眵鸱瘛褫蚩螭笞篪豉踟魑"}; 46 | const unsigned char PY_mb_chong[]= {"种虫重充冲崇涌宠茺忡憧铳舂艟"}; 47 | const unsigned char PY_mb_chou[]= {"抽仇臭酬畴踌稠愁筹绸瞅丑俦帱惆瘳雠"}; 48 | const unsigned char PY_mb_chu[]= {"出处除初础触楚锄储畜橱厨躇雏滁矗搐亍刍怵憷绌杵楮樗褚蜍蹰黜屮"}; 49 | const unsigned char PY_mb_chuai[]= {"揣搋啜嘬膪踹"}; 50 | const unsigned char PY_mb_chuan[]= {"传船穿串川椽喘舛遄巛氚钏舡"}; 51 | const unsigned char PY_mb_chuang[]={"床创窗闯疮幢怆"}; 52 | const unsigned char PY_mb_chui[]= {"吹垂锤椎炊捶陲棰槌"}; 53 | const unsigned char PY_mb_chun[]= {"春纯醇椿唇淳蠢莼鹑蝽"}; 54 | const unsigned char PY_mb_chuo[]= {"戳绰啜辍踔龊"}; 55 | const unsigned char PY_mb_ci[]= {"此次刺磁雌词茨疵辞慈瓷赐伺兹茈呲祠鹚糍"}; 56 | const unsigned char PY_mb_cong[]= {"从丛聪葱囱匆苁淙骢琮璁"}; 57 | const unsigned char PY_mb_cou[]= {"凑楱辏腠"}; 58 | const unsigned char PY_mb_cu[]= {"粗促醋簇卒蔟徂猝殂酢蹙蹴"}; 59 | const unsigned char PY_mb_cuan[]= {"篡蹿窜攒汆撺爨镩"}; 60 | const unsigned char PY_mb_cui[]= {"催脆淬粹摧衰崔瘁翠萃啐悴璀榱毳隹"}; //来 自 :ST_M8._C N 61 | const unsigned char PY_mb_cun[]= {"存村寸蹲忖皴"}; 62 | const unsigned char PY_mb_cuo[]= {"错措撮磋搓挫厝嵯脞锉矬痤瘥鹾蹉"}; 63 | const unsigned char PY_mb_d[]= {"的大地杜董段戴邓丁窦狄翟刁电党定等当队点代道"}; 64 | const unsigned char PY_mb_da[]= {"大打达答搭塔瘩耷哒嗒怛妲沓疸褡笪靼鞑"}; 65 | const unsigned char PY_mb_dai[]= {"大代带待袋戴呆歹傣殆贷逮怠埭甙呔岱迨骀绐玳黛"}; 66 | const unsigned char PY_mb_dan[]= {"单但弹担石蛋淡胆氮丹旦耽郸掸惮诞儋萏啖澹殚赕眈疸瘅聃箪"}; 67 | const unsigned char PY_mb_dang[]= {"党当档挡荡谠凼菪宕砀裆"}; 68 | const unsigned char PY_mb_dao[]= {"到道导刀倒稻岛捣盗蹈祷悼叨帱忉氘焘纛"}; 69 | const unsigned char PY_mb_de[]= {"的得地德底锝"}; 70 | const unsigned char PY_mb_deng[]= {"等灯登邓澄蹬瞪凳噔嶝戥磴镫簦"}; 71 | const unsigned char PY_mb_di[]= {"的地第低敌底提帝抵滴弟递堤迪笛狄涤翟嫡蒂缔氐籴诋谛邸坻荻嘀娣绨柢棣觌砥碲睇镝羝骶"}; 72 | const unsigned char PY_mb_dia[]= {"嗲"}; 73 | const unsigned char PY_mb_dian[]= {"电点垫典店颠淀掂滇碘靛佃甸惦奠殿阽坫巅玷钿癜癫簟踮"}; 74 | const unsigned char PY_mb_diao[]= {"调掉吊鸟碉叼雕凋刁钓铞铫貂鲷"}; 75 | const unsigned char PY_mb_die[]= {"迭跌爹碟蝶谍叠垤堞揲喋牒瓞耋踮蹀鲽"}; 76 | const unsigned char PY_mb_ding[]= {"定顶钉丁订盯叮鼎锭仃啶玎腚碇町铤疔耵酊"}; 77 | const unsigned char PY_mb_diu[]= {"丢铥"}; 78 | const unsigned char PY_mb_dong[]= {"动东冬懂洞冻董栋侗恫垌咚岽峒氡胨胴硐鸫"}; 79 | const unsigned char PY_mb_dou[]= {"斗都豆读兜抖陡逗痘蔸窦蚪篼"}; 80 | const unsigned char PY_mb_du[]= {"度都毒独读渡杜堵镀顿督犊睹赌肚妒芏嘟渎椟牍蠹笃髑黩"}; 81 | const unsigned char PY_mb_duan[]= {"断端段短锻缎椴煅簖"}; 82 | const unsigned char PY_mb_dui[]= {"对队堆敦兑怼憝碓"}; 83 | const unsigned char PY_mb_dun[]= {"盾吨顿蹲敦墩囤钝遁沌炖砘礅盹镦趸"}; 84 | const unsigned char PY_mb_duo[]= {"多度夺朵掇哆垛躲跺舵剁惰堕驮咄哚沲缍柁铎裰踱"}; 85 | const unsigned char PY_mb_e[]= {"恶额恩俄耳饵蛾饿峨鹅讹娥厄扼遏鄂噩谔垩苊莪萼呃愕屙婀轭腭锇锷鹗颚鳄"}; 86 | const unsigned char PY_mb_ei[]= {"诶"}; 87 | const unsigned char PY_mb_en[]= {"恩蒽摁"}; 88 | const unsigned char PY_mb_er[]= {"而二尔儿耳饵洱贰佴迩珥铒鸸鲕"}; 89 | const unsigned char PY_mb_f[]= {"分发范樊方冯反放复风防非封富翻"}; 90 | const unsigned char PY_mb_fa[]= {"发法阀乏伐罚筏珐垡砝"}; 91 | const unsigned char PY_mb_fan[]= {"反翻范犯饭繁泛番凡烦返藩帆樊矾钒贩蕃蘩幡梵燔畈蹯"}; 92 | const unsigned char PY_mb_fang[]= {"方放防访房纺仿妨芳肪坊邡彷枋钫舫鲂"}; 93 | const unsigned char PY_mb_fei[]= {"非肥飞费废肺沸菲匪啡诽吠芾狒悱淝妃绯榧腓斐扉镄痱蜚篚翡霏鲱"}; 94 | const unsigned char PY_mb_fen[]= {"分粉奋份粪纷芬愤酚吩氛坟焚汾忿偾瀵玢棼鲼鼢"}; 95 | const unsigned char PY_mb_feng[]= {"风封蜂丰缝峰锋疯奉枫烽逢冯讽凤俸酆葑唪沣砜"}; 96 | const unsigned char PY_mb_fo[]= {"佛"}; 97 | const unsigned char PY_mb_fou[]= {"否缶"}; 98 | const unsigned char PY_mb_fu[]= {"复服副府夫负富附福伏符幅腐浮辅付腹妇孵覆扶辐傅佛缚父弗甫肤氟敷拂俘涪袱抚俯釜斧脯腑赴赋阜讣咐匐凫郛芙芾苻茯莩菔拊呋幞怫滏艴孚驸绂绋桴赙祓砩黻黼罘稃馥蚨蜉蝠蝮麸趺跗鲋鳆"}; 99 | const unsigned char PY_mb_g[]= {"个国工过高郭戈葛耿巩龚甘干古贾谷顾关管各革公根更改光广果格共搞"}; 100 | const unsigned char PY_mb_ga[]= {"夹噶嘎胳尬尕尜旮钆"}; //来 自 :ST_M8._C N 101 | const unsigned char PY_mb_gai[]= {"改该盖概钙溉芥丐陔垓戤赅"}; 102 | const unsigned char PY_mb_gan[]= {"干杆感敢赶甘肝秆柑竿赣乾坩苷尴擀泔淦澉绀橄旰矸疳酐"}; 103 | const unsigned char PY_mb_gang[]= {"刚钢缸纲岗港杠冈肛扛戆罡筻"}; 104 | const unsigned char PY_mb_gao[]= {"高搞告稿膏篙皋羔糕镐睾诰郜藁缟槔槁杲锆"}; 105 | const unsigned char PY_mb_ge[]= {"个各革合格割歌隔盖哥葛铬阁戈搁鸽胳疙蛤咯屹鬲仡哿圪塥嗝纥搿膈硌镉袼颌虼舸骼"}; 106 | const unsigned char PY_mb_gei[]= {"给"}; 107 | const unsigned char PY_mb_gen[]= {"根跟亘茛哏艮"}; 108 | const unsigned char PY_mb_geng[]= {"更耕颈庚羹埂耿梗哽赓绠鲠"}; 109 | const unsigned char PY_mb_gong[]= {"工公共供功攻红巩贡汞宫恭龚躬弓拱珙肱蚣觥"}; 110 | const unsigned char PY_mb_gou[]= {"够构沟句狗钩勾购苟垢佝诟岣遘媾缑枸觏彀笱篝鞲"}; 111 | const unsigned char PY_mb_gu[]= {"鼓固古骨故顾股谷估雇孤姑贾辜菇咕箍沽蛊嘏诂菰呱崮汩梏轱牯牿臌毂瞽罟钴锢鸪鹄痼蛄酤觚鲴鹘"}; 112 | const unsigned char PY_mb_gua[]= {"挂刮瓜括剐寡褂卦诖呱栝胍鸹"}; 113 | const unsigned char PY_mb_guai[]= {"怪乖拐掴"}; 114 | const unsigned char PY_mb_guan[]= {"关管观官灌贯惯冠馆罐棺纶倌莞掼涫盥鹳矜鳏"}; 115 | const unsigned char PY_mb_guang[]={"光广逛咣犷桄胱"}; 116 | const unsigned char PY_mb_gui[]= {"规贵归硅鬼轨龟桂瑰圭闺诡癸柜跪刽傀炔匦刿庋宄妫桧炅晷皈簋鲑鳜"}; 117 | const unsigned char PY_mb_gun[]= {"滚辊棍衮绲磙鲧"}; 118 | const unsigned char PY_mb_guo[]= {"国过果锅郭涡裹馘埚掴呙帼崞猓椁虢聒蜾蝈"}; 119 | const unsigned char PY_mb_h[]= {"和会后何黄胡洪侯贺霍扈韩华郝化好合还活很回号毫花或海话红火害"}; 120 | const unsigned char PY_mb_ha[]= {"哈蛤虾铪"}; 121 | const unsigned char PY_mb_hai[]= {"还海害孩骸氦亥骇嘿咳嗨胲醢"}; 122 | const unsigned char PY_mb_han[]= {"含焊旱喊汉寒汗函韩酣憨邯涵罕翰撼捍憾悍邗菡撖阚瀚晗焓顸颔蚶鼾"}; 123 | const unsigned char PY_mb_hang[]= {"行航夯杭吭巷沆绗珩颃"}; 124 | const unsigned char PY_mb_hao[]= {"好号毫耗豪郝浩镐壕嚎貉蒿薅嗥嚆濠灏昊皓颢蚝"}; 125 | const unsigned char PY_mb_he[]= {"和合河何核赫荷褐喝贺呵禾吓盒菏貉阂涸鹤诃劾壑嗬阖纥曷盍颌蚵翮"}; 126 | const unsigned char PY_mb_hei[]= {"黑嘿嗨"}; 127 | const unsigned char PY_mb_hen[]= {"很狠痕恨"}; 128 | const unsigned char PY_mb_heng[]= {"横衡恒哼亨蘅行珩桁"}; 129 | const unsigned char PY_mb_hong[]= {"红洪轰烘哄虹鸿宏弘黉訇讧荭蕻薨闳泓"}; 130 | const unsigned char PY_mb_hou[]= {"后候厚侯喉猴吼堠後逅瘊篌糇鲎骺"}; 131 | const unsigned char PY_mb_hu[]= {"和护互湖呼户弧乎胡糊虎忽核瑚戏壶葫蝴狐唬沪冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜瓠鹄鹕鹱笏醐斛"}; 132 | const unsigned char PY_mb_hua[]= {"化花话划滑华画哗猾豁骅桦砉铧"}; 133 | const unsigned char PY_mb_huai[]= {"坏怀划淮槐徊踝"}; 134 | const unsigned char PY_mb_huan[]= {"还环换欢缓患幻焕桓唤痪豢涣宦郇奂萑擐圜獾洹浣漶寰逭缳锾鲩鬟"}; 135 | const unsigned char PY_mb_huang[]= {"黄簧荒皇慌蝗磺凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇"}; 136 | const unsigned char PY_mb_hui[]= {"会回灰挥辉汇毁慧恢绘惠徽溃堕徊蛔悔卉晦贿秽烩讳诲诙茴荟蕙咴哕喙隳洄浍彗缋珲桧晖恚虺蟪麾"}; 137 | const unsigned char PY_mb_hun[]= {"混浑荤昏婚魂诨馄阍溷"}; 138 | const unsigned char PY_mb_huo[]= {"和活或火货获伙霍豁惑祸劐藿攉嚯夥钬锪镬耠蠖"}; 139 | const unsigned char PY_mb_j[]= {"级贾江蒋姜焦金靳晋就进加经家结阶间件及解较机军接教极九见"}; 140 | const unsigned char PY_mb_ji[]= {"级及机极几积给基其记己期系革计集即际季激济技击继急剂既纪寄挤鸡迹绩齐奇吉脊辑籍疾肌棘畸圾稽箕饥讥姬缉汲嫉蓟冀伎祭悸寂忌妓藉丌亟乩剞佶偈诘墼芨芰荠蒺蕺掎叽咭哜唧岌嵴洎屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠虮笈笄暨跻跽霁鲚鲫髻麂"}; 141 | const unsigned char PY_mb_jia[]= {"加家架价甲夹假钾贾稼驾嘉枷佳荚颊嫁茄挟嘏伽郏葭岬浃迦珈戛胛恝铗镓痂瘕袷蛱笳袈跏"}; 142 | const unsigned char PY_mb_jian[]= {"间件见建坚减检践尖简碱剪艰渐肩键健柬鉴剑歼监兼浅奸箭茧舰俭笺煎缄硷拣捡荐槛贱饯溅涧僭谏谫菅蒹搛囝湔蹇謇缣枧楗戋戬牮犍毽腱睑锏鹣裥笕翦趼踺鲣鞯"}; 143 | const unsigned char PY_mb_jiang[]= {"将降讲强江浆蒋奖疆僵姜桨匠酱茳洚绛缰犟礓耩糨豇"}; 144 | const unsigned char PY_mb_jiao[]= {"较教交角叫脚胶浇焦觉校蕉搅酵郊铰窖椒礁骄娇嚼矫侥狡饺缴绞剿轿佼僬艽茭挢噍峤徼姣敫皎鹪蛟醮跤鲛"}; 145 | const unsigned char PY_mb_jie[]= {"结阶解接节家界截介借价届街揭洁杰竭皆秸劫桔捷睫姐戒藉芥疥诫楷偈讦诘拮喈嗟婕孑桀碣疖颉蚧羯鲒骱"}; 146 | const unsigned char PY_mb_jin[]= {"进金近紧斤今尽仅劲浸禁津筋锦晋巾襟谨靳烬卺荩堇噤馑廑妗缙瑾槿赆觐衿矜"}; 147 | const unsigned char PY_mb_jing[]= {"经精京径井静竟晶净境镜景警劲茎敬惊睛竞荆兢鲸粳痉靖刭儆阱菁獍憬泾迳弪婧肼胫腈旌靓"}; 148 | const unsigned char PY_mb_jiong[]= {"炯窘迥炅扃"}; 149 | const unsigned char PY_mb_jiu[]= {"就九旧究久救酒纠揪玖韭灸厩臼舅咎疚僦啾阄柩桕鸠鹫赳鬏"}; 150 | const unsigned char PY_mb_ju[]= {"具据局举车句聚距巨居锯剧矩拒柜桔鞠拘狙疽驹菊咀沮踞俱惧炬倨讵苣苴莒掬遽屦琚枸椐榘榉橘犋飓钜锔窭裾趄醵踽龃雎瞿鞫"}; 151 | const unsigned char PY_mb_juan[]= {"卷捐鹃娟倦眷绢俊鄄狷涓桊蠲锩镌隽"}; 152 | const unsigned char PY_mb_jue[]= {"决觉绝角脚掘嚼撅攫抉倔爵诀厥劂谲矍蕨嗟噘噱崛獗孓珏桷橛爝镢蹶觖巨额"}; 153 | const unsigned char PY_mb_jun[]= {"军均菌君龟钧峻俊竣浚郡骏捃皲筠麇"}; 154 | const unsigned char PY_mb_k[]= {"可开看蒯克孔邝寇科口空苦快考刻靠况块困宽矿抗卡"}; 155 | const unsigned char PY_mb_ka[]= {"卡喀咖咯佧咔胩"}; 156 | const unsigned char PY_mb_kai[]= {"开凯揩楷慨剀垲蒈忾恺铠锎锴"}; 157 | const unsigned char PY_mb_kan[]= {"看刊坎槛堪勘砍嵌侃莰阚戡龛瞰"}; 158 | const unsigned char PY_mb_kang[]= {"抗康炕慷糠扛亢伉闶钪"}; 159 | const unsigned char PY_mb_kao[]= {"考靠拷烤尻栲犒铐"}; 160 | const unsigned char PY_mb_ke[]= {"可克科刻客壳颗棵柯呵坷苛磕咳渴课嗑岢恪溘骒缂珂轲氪瞌钶锞稞疴窠颏蝌髁"}; 161 | const unsigned char PY_mb_ken[]= {"肯啃垦恳裉"}; 162 | const unsigned char PY_mb_keng[]= {"坑吭铿"}; 163 | const unsigned char PY_mb_kong[]= {"孔空控恐倥崆箜"}; 164 | const unsigned char PY_mb_kou[]= {"口扣抠寇芤蔻叩眍筘"}; 165 | const unsigned char PY_mb_ku[]= {"苦库枯酷哭窟裤刳堀喾绔骷"}; 166 | const unsigned char PY_mb_kua[]= {"跨夸垮挎胯侉"}; 167 | const unsigned char PY_mb_kuai[]= {"会快块筷侩蒯郐哙狯浍脍"}; 168 | const unsigned char PY_mb_kuan[]= {"宽款髋"}; 169 | const unsigned char PY_mb_kuang[]= {"况矿狂框匡筐眶旷诓诳邝圹夼哐纩贶"}; 170 | const unsigned char PY_mb_kui[]= {"奎溃馈亏盔岿窥葵魁傀愧馗匮夔隗蒉揆喹喟悝愦逵暌睽聩蝰篑跬"}; 171 | const unsigned char PY_mb_kun[]= {"困昆坤捆悃阃琨锟醌鲲髡"}; 172 | const unsigned char PY_mb_kuo[]= {"扩括适阔廓栝蛞"}; 173 | const unsigned char PY_mb_l[]= {"了来赖罗吕刘鲁李林雷廖卢梁厉廉陆龙黎鹿量理路里论两利领流力立料连老六轮类列"}; 174 | const unsigned char PY_mb_la[]= {"拉落啦蜡腊蓝垃喇辣剌邋旯砬瘌"}; 175 | const unsigned char PY_mb_lai[]= {"来赖莱崃徕涞濑赉睐铼癞籁"}; 176 | const unsigned char PY_mb_lan[]= {"兰烂蓝览栏婪拦篮阑澜谰揽懒缆滥岚漤榄斓罱镧褴"}; 177 | const unsigned char PY_mb_lang[]= {"浪朗郎狼琅榔廊莨蒗啷阆锒稂螂"}; 178 | const unsigned char PY_mb_lao[]= {"老劳落牢涝捞络佬姥酪烙潦唠崂栳铑铹痨耢醪"}; 179 | const unsigned char PY_mb_le[]= {"了乐勒肋仂叻泐鳓"}; 180 | const unsigned char PY_mb_lei[]= {"类雷累勒垒泪镭蕾磊儡擂肋羸诔嘞嫘缧檑耒酹"}; 181 | const unsigned char PY_mb_leng[]= {"冷棱楞塄愣"}; 182 | const unsigned char PY_mb_li[]= {"理里利力立离例历粒厘礼李隶黎璃励犁梨丽厉篱狸漓鲤莉荔吏栗砾傈俐痢沥哩鬲俪俚郦坜苈莅蓠藜呖唳喱猁悝溧澧逦娌嫠骊缡枥栎轹戾砺詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧"}; 183 | const unsigned char PY_mb_lia[]= {"俩"}; 184 | const unsigned char PY_mb_lian[]= {"连联练炼脸链莲镰廉怜涟帘敛恋蔹奁潋濂琏楝殓臁裢裣蠊鲢立案"}; 185 | const unsigned char PY_mb_liang[]= {"量两粮良亮梁凉辆粱晾谅墚莨椋踉靓魉"}; 186 | const unsigned char PY_mb_liao[]= {"了料疗辽僚撩聊燎寥潦撂镣廖蓼尥嘹獠寮缭钌鹩"}; 187 | const unsigned char PY_mb_lie[]= {"列裂烈劣猎冽埒捩咧洌趔躐鬣"}; 188 | const unsigned char PY_mb_lin[]= {"林磷临邻淋麟琳霖鳞凛赁吝蔺啉嶙廪懔遴檩辚膦瞵粼躏"}; 189 | const unsigned char PY_mb_ling[]= {"领另零令灵岭铃龄凌棱陵拎玲菱伶羚酃苓呤囹泠绫柃棂瓴聆蛉翎鲮"}; 190 | const unsigned char PY_mb_liu[]= {"流六留刘硫柳陆馏瘤溜琉榴碌浏遛骝绺旒熘锍镏鹨鎏"}; 191 | const unsigned char PY_mb_lo[]= {"咯"}; 192 | const unsigned char PY_mb_long[]= {"龙垄弄笼隆聋咙窿拢陇垅茏泷珑栊胧砻癃"}; 193 | const unsigned char PY_mb_lou[]= {"漏露楼娄搂篓陋偻蒌喽嵝镂瘘耧蝼髅"}; 194 | const unsigned char PY_mb_lu[]= {"路录陆炉露芦卢颅庐掳卤虏鲁麓碌赂鹿潞禄戮垆撸噜泸渌漉逯璐栌橹轳辂辘氇胪镥鸬鹭簏舻鲈六绿"}; 195 | const unsigned char PY_mb_luan[]= {"卵乱峦挛孪滦脔娈栾鸾銮"}; 196 | const unsigned char PY_mb_lue[]= {"略掠锊"}; 197 | const unsigned char PY_mb_lun[]= {"论轮伦抡仑沦纶囵"}; 198 | const unsigned char PY_mb_luo[]= {"落罗螺洛络逻咯烙萝锣箩骡裸骆倮蠃荦捋摞猡泺漯珞椤脶硌镙瘰雒"}; 199 | const unsigned char PY_mb_lv[]= {"率律旅虑驴吕铝侣履屡缕氯滤绿捋闾榈膂稆褛偻"}; 200 | const unsigned char PY_mb_m[]= {"面命马孟穆梅糜们民毛茅苗莫没米明么每门名磨美密满亩目呒"}; 201 | const unsigned char PY_mb_ma[]= {"马么麻吗妈骂嘛码摩抹玛蚂唛犸嬷杩蟆"}; 202 | const unsigned char PY_mb_mai[]= {"麦脉卖买埋迈劢荬霾"}; 203 | const unsigned char PY_mb_man[]= {"满慢曼漫蔓瞒馒蛮谩墁幔缦熳镘颟螨鳗鞔"}; 204 | const unsigned char PY_mb_mang[]= {"忙芒盲茫氓莽邙漭硭蟒"}; 205 | const unsigned char PY_mb_mao[]= {"毛矛冒貌贸帽猫茅锚铆卯茂袤茆峁泖瑁昴牦耄旄懋瞀蟊髦"}; 206 | const unsigned char PY_mb_me[]= {"么麽"}; 207 | const unsigned char PY_mb_mei[]= {"没每美煤霉酶梅妹眉玫枚媒镁昧寐媚糜谜莓嵋猸浼湄楣镅鹛袂魅"}; 208 | const unsigned char PY_mb_men[]= {"们门闷扪焖懑钔"}; 209 | const unsigned char PY_mb_meng[]= {"孟猛蒙盟梦萌锰氓檬勐甍瞢懵朦礞虻蜢蠓艋艨"}; 210 | const unsigned char PY_mb_mi[]= {"米密迷蜜秘眯醚靡糜谜弥觅泌幂芈谧蘼咪嘧猕汨宓弭脒祢敉糸縻麋"}; 211 | const unsigned char PY_mb_mian[]= {"面棉免绵眠冕勉娩缅沔渑湎腼眄"}; 212 | const unsigned char PY_mb_miao[]= {"苗秒描庙妙瞄藐渺喵邈缈缪杪淼眇鹋"}; 213 | const unsigned char PY_mb_mie[]= {"灭蔑乜咩蠛篾"}; 214 | const unsigned char PY_mb_min[]= {"民敏抿皿悯闽苠岷闵泯缗玟珉愍黾鳘"}; 215 | const unsigned char PY_mb_ming[]= {"命明名鸣螟盟铭冥茗溟暝瞑酩"}; 216 | const unsigned char PY_mb_miu[]= {"谬缪"}; 217 | const unsigned char PY_mb_mo[]= {"无磨没万末模膜摸墨摩脉莫抹冒默貉嘿摹蘑魔沫漠寞陌谟茉蓦馍嫫殁镆秣瘼耱貊貘"}; 218 | const unsigned char PY_mb_mou[]= {"某谋牟侔哞缪眸蛑蝥鍪"}; 219 | const unsigned char PY_mb_mu[]= {"亩目木母墓模幕牧姆穆姥牟拇牡暮募慕睦仫坶苜沐毪钼"}; 220 | const unsigned char PY_mb_n[]= {"年能内那聂农你南难呢女泥哪拿念牛宁脑粘尼纳嗯"}; 221 | const unsigned char PY_mb_na[]= {"那南哪拿纳呢钠呐娜捺肭镎衲"}; 222 | const unsigned char PY_mb_nai[]= {"耐哪奶乃氖奈鼐艿萘柰"}; 223 | const unsigned char PY_mb_nan[]= {"南难男喃囝囡楠腩蝻赧"}; 224 | const unsigned char PY_mb_nang[]= {"囊攮囔馕曩"}; 225 | const unsigned char PY_mb_nao[]= {"脑闹努挠恼淖孬垴呶猱瑙硇铙蛲"}; 226 | const unsigned char PY_mb_ne[]= {"呢哪呐讷"}; 227 | const unsigned char PY_mb_nei[]= {"内那哪馁"}; 228 | const unsigned char PY_mb_nen[]= {"嫩恁"}; 229 | const unsigned char PY_mb_neng[]= {"能"}; 230 | const unsigned char PY_mb_ni[]= {"你泥尼呢逆拟尿妮霓倪匿腻溺伲坭猊怩昵旎祢慝睨铌鲵"}; 231 | const unsigned char PY_mb_nian[]= {"年念粘蔫拈碾撵捻酿廿埝辇黏鲇鲶"}; 232 | const unsigned char PY_mb_niang[]={"娘酿"}; 233 | const unsigned char PY_mb_niao[]= {"尿鸟溺茑嬲脲袅"}; 234 | const unsigned char PY_mb_nie[]= {"镍啮涅捏聂孽镊乜陧蘖嗫颞臬蹑"}; 235 | const unsigned char PY_mb_nin[]= {"您恁"}; 236 | const unsigned char PY_mb_ning[]= {"宁凝拧柠狞泞佞苎咛甯聍"}; 237 | const unsigned char PY_mb_niu[]= {"牛扭钮纽拗狃忸妞"}; 238 | const unsigned char PY_mb_nong[]= {"农弄浓脓侬哝"}; 239 | const unsigned char PY_mb_nou[]= {"耨"}; 240 | const unsigned char PY_mb_nu[]= {"努奴怒弩胬孥驽"}; 241 | const unsigned char PY_mb_nuan[]= {"暖"}; 242 | const unsigned char PY_mb_nuo[]= {"诺娜挪懦糯傩搦喏锘"}; 243 | const unsigned char PY_mb_nv[]= {"女恧钕衄"}; 244 | const unsigned char PY_mb_nve[]= {"虐疟"}; 245 | const unsigned char PY_mb_o[]= {"哦喔噢欧偶鸥殴藕呕怄耦"}; 246 | const unsigned char PY_mb_ou[]= {"区欧偶鸥殴藕呕沤讴怄瓯耦"}; 247 | const unsigned char PY_mb_p[]= {"批平判潘彭庞裴蒲配片派破排品皮喷盘偏评怕培普贫跑炮"}; 248 | const unsigned char PY_mb_pa[]= {"怕派爬帕扒耙啪趴琶葩杷钯筢"}; 249 | const unsigned char PY_mb_pai[]= {"派排拍牌迫哌徘湃俳蒎"}; 250 | const unsigned char PY_mb_pan[]= {"判盘叛番潘攀磐盼畔胖拚爿泮袢襻蟠蹒"}; 251 | const unsigned char PY_mb_pang[]= {"旁膀磅乓庞耪胖彷滂逄螃"}; 252 | const unsigned char PY_mb_pao[]= {"跑炮刨抛泡咆袍匏狍庖脬疱"}; 253 | const unsigned char PY_mb_pei[]= {"配培陪胚呸裴赔佩沛辔帔旆锫醅霈"}; 254 | const unsigned char PY_mb_pen[]= {"喷盆湓"}; 255 | const unsigned char PY_mb_peng[]= {"碰棚蓬朋捧膨砰抨烹澎彭硼篷鹏堋嘭怦蟛"}; 256 | const unsigned char PY_mb_pi[]= {"批皮坏否辟坯脾疲砒霹披劈琵毗啤匹痞僻屁譬丕仳陂陴邳郫圮埤鼙芘擗吡噼庀淠媲纰枇甓睥罴铍癖裨疋蚍蜱貔"}; 257 | const unsigned char PY_mb_pian[]= {"片偏便篇骗扁谝骈缏犏胼翩蹁"}; 258 | const unsigned char PY_mb_piao[]= {"票漂朴飘瓢剽莩嘌嫖骠缥殍瞟螵"}; 259 | const unsigned char PY_mb_pie[]= {"撇瞥丿苤氕"}; 260 | const unsigned char PY_mb_pin[]= {"品贫频拼苹聘拚姘嫔榀牝颦"}; 261 | const unsigned char PY_mb_ping[]= {"平评瓶凭苹冯乒坪萍屏俜娉枰鲆冖"}; 262 | const unsigned char PY_mb_po[]= {"破迫坡泼繁朴泊颇婆魄粕叵陂鄱泺珀攴钋钷钹皤笸"}; 263 | const unsigned char PY_mb_pou[]= {"剖裒掊"}; 264 | const unsigned char PY_mb_pu[]= {"普谱扑埔铺暴葡朴蒲堡脯仆莆菩圃浦曝瀑匍噗溥濮璞氆镤镨蹼"}; 265 | const unsigned char PY_mb_q[]= {"起前其钱乔齐祁秦屈邱戚瞿去气全期群情区强切取七求清确权且青"}; 266 | const unsigned char PY_mb_qi[]= {"起其气期七器齐奇汽企漆欺旗畦启弃歧稽缉栖戚妻凄柒沏棋崎脐祈祁骑岂乞契砌迄泣讫亟亓俟圻芑芪荠萁萋葺蕲嘁屺岐岖汔淇骐绮琪琦杞桤槭耆欹祺憩碛颀蛴蜞綦綮蹊鳍麒"}; 267 | const unsigned char PY_mb_qia[]= {"卡恰掐洽伽葜袷髂"}; 268 | const unsigned char PY_mb_qian[]= {"前千钱浅签迁铅潜牵钳纤谴扦钎仟谦乾黔遣堑嵌欠歉倩佥阡芊芡茜荨掮岍悭慊骞搴褰缱椠犍肷愆钤虔箬箝"}; 269 | const unsigned char PY_mb_qiang[]= {"强将枪抢墙腔呛羌蔷戕嫱樯戗炝锖锵镪襁蜣羟跄"}; 270 | const unsigned char PY_mb_qiao[]= {"桥瞧壳巧敲乔蕉橇锹悄侨鞘撬翘峭俏窍雀劁诮谯荞峤愀憔缲樵硗跷鞒"}; 271 | const unsigned char PY_mb_qie[]= {"切且砌茄怯窃伽郄惬慊妾挈锲箧"}; 272 | const unsigned char PY_mb_qin[]= {"亲侵勤秦钦琴芹擒禽寝沁芩揿吣嗪噙廑溱檎锓矜覃螓衾"}; 273 | const unsigned char PY_mb_qing[]= {"情清青轻倾请亲庆氢晴卿擎氰顷苘圊檠磬蜻罄箐綮謦鲭黥"}; 274 | const unsigned char PY_mb_qiong[]= {"穷琼邛茕穹蛩筇跫銎"}; 275 | const unsigned char PY_mb_qiu[]= {"求球秋丘仇龟邱囚酋泅俅巯犰湫逑遒楸赇虬蚯蝤裘糗鳅鼽"}; 276 | const unsigned char PY_mb_qu[]= {"去区取曲且渠屈趋驱趣蛆躯娶龋戌诎劬苣蕖蘧岖衢阒璩觑氍朐祛磲鸲癯蛐蠼麴瞿黢"}; 277 | const unsigned char PY_mb_quan[]= {"全权圈劝泉醛颧痊拳犬券诠荃悛绻辁畎铨蜷筌鬈"}; 278 | const unsigned char PY_mb_que[]= {"确却缺炔瘸鹊榷雀阕阙悫"}; 279 | const unsigned char PY_mb_qun[]= {"群裙逡"}; 280 | const unsigned char PY_mb_r[]= {"人如日阮荣认入任热然容让润弱燃染壤绕仁溶刃仍"}; 281 | const unsigned char PY_mb_ran[]= {"然燃染冉苒蚺髯"}; 282 | const unsigned char PY_mb_rang[]= {"让壤嚷瓤攘禳穰"}; 283 | const unsigned char PY_mb_rao[]= {"绕扰饶荛娆桡"}; 284 | const unsigned char PY_mb_re[]= {"热若惹"}; 285 | const unsigned char PY_mb_ren[]= {"人认任仁刃忍壬韧妊纫仞荏葚饪轫稔衽"}; 286 | const unsigned char PY_mb_reng[]= {"仍扔"}; 287 | const unsigned char PY_mb_ri[]= {"日"}; 288 | const unsigned char PY_mb_rong[]= {"容溶荣熔融绒戎茸蓉冗嵘狨榕肜蝾"}; 289 | const unsigned char PY_mb_rou[]= {"肉揉柔糅蹂鞣"}; 290 | const unsigned char PY_mb_ru[]= {"如入儒乳茹蠕孺辱汝褥蓐薷嚅洳溽濡缛铷襦颥"}; 291 | const unsigned char PY_mb_ruan[]= {"软阮朊"}; 292 | const unsigned char PY_mb_rui[]= {"瑞锐蕊芮蕤枘睿蚋"}; 293 | const unsigned char PY_mb_run[]= {"润闰"}; 294 | const unsigned char PY_mb_ruo[]= {"弱若偌箬"}; 295 | const unsigned char PY_mb_s[]= {"是上时孙宋苏沈粟施邵佘申师帅沙隋石史生说社深水所三十使事数四实少式山手"}; 296 | const unsigned char PY_mb_sa[]= {"撒萨洒卅仨挲脎飒"}; 297 | const unsigned char PY_mb_sai[]= {"塞思赛腮鳃噻"}; 298 | const unsigned char PY_mb_san[]= {"三散叁伞馓毵糁"}; 299 | const unsigned char PY_mb_sang[]= {"桑丧嗓搡磉颡"}; 300 | const unsigned char PY_mb_sao[]= {"扫梢搔骚嫂埽缫缲臊瘙鳋"}; 301 | const unsigned char PY_mb_se[]= {"色塞瑟涩啬铯穑"}; 302 | const unsigned char PY_mb_sen[]= {"森"}; 303 | const unsigned char PY_mb_seng[]= {"僧"}; 304 | const unsigned char PY_mb_sh[]= {"数厦山删商少召社设甚声市师始手收守书属术输双水谁睡税顺"}; 305 | const unsigned char PY_mb_sha[]= {"沙杀砂啥纱莎刹傻煞杉厦唼嗄挲歃铩痧裟霎鲨"}; 306 | const unsigned char PY_mb_shai[]= {"色筛晒"}; 307 | const unsigned char PY_mb_shan[]= {"山单闪善珊扇陕掸苫杉删煽衫擅赡膳汕缮栅剡讪鄯埏芟潸姗嬗骟膻禅钐疝蟮舢跚鳝"}; 308 | const unsigned char PY_mb_shang[]= {"上商伤尚汤墒赏晌裳垧绱殇熵觞"}; 309 | const unsigned char PY_mb_shao[]= {"少烧稍绍召哨梢鞘捎芍勺韶邵劭苕潲杓蛸筲艄"}; 310 | const unsigned char PY_mb_she[]= {"社设射摄舌折涉舍蛇奢赊赦慑厍佘摺猞滠歙畲麝"}; 311 | const unsigned char PY_mb_shen[]= {"深身神什伸参甚渗沈肾审申慎砷呻娠绅婶诜谂莘葚哂渖椹胂矧蜃"}; 312 | const unsigned char PY_mb_sheng[]= {"生胜声省升盛绳剩圣牲乘甥嵊渑晟眚笙"}; 313 | const unsigned char PY_mb_shi[]= {"是时十使事实式识世试石什示市史师始施士势湿适食失视室氏似蚀诗释殖拾饰驶匙狮尸虱矢屎柿拭誓逝嗜噬仕侍恃嘘峙谥埘莳蓍弑轼贳炻铈螫舐筮酾豕鲥鲺礻饣"}; 314 | const unsigned char PY_mb_shou[]= {"手受收首守熟授寿兽售瘦狩绶艏"}; 315 | const unsigned char PY_mb_shu[]= {"数书树属术输述熟束鼠疏殊舒蔬薯叔署枢梳抒淑赎孰暑曙蜀黍戍竖墅庶漱恕俞丨倏塾菽摅沭澍姝纾毹腧殳秫"}; 316 | const unsigned char PY_mb_shua[]= {"刷耍唰"}; 317 | const unsigned char PY_mb_shuai[]= {"衰帅摔甩蟀"}; 318 | const unsigned char PY_mb_shuan[]= {"栓拴闩涮"}; 319 | const unsigned char PY_mb_shuang[]={"双霜爽泷孀"}; 320 | const unsigned char PY_mb_shui[]= {"水说谁睡税"}; 321 | const unsigned char PY_mb_shun[]= {"顺吮瞬舜"}; 322 | const unsigned char PY_mb_shuo[]= {"说数硕朔烁蒴搠妁槊铄"}; 323 | const unsigned char PY_mb_si[]= {"四思死斯丝似司饲食私厕撕嘶肆寺嗣伺巳厮俟兕厶咝汜泗澌姒驷缌祀锶鸶耜蛳笥"}; 324 | const unsigned char PY_mb_song[]= {"松送宋颂耸怂讼诵凇菘崧嵩忪悚淞竦"}; 325 | const unsigned char PY_mb_sou[]= {"搜艘擞嗽叟薮嗖嗾馊溲飕瞍锼螋"}; 326 | const unsigned char PY_mb_su[]= {"素速苏塑缩俗诉宿肃酥粟僳溯夙谡蔌嗉愫涑簌觫稣"}; 327 | const unsigned char PY_mb_suan[]= {"算酸蒜狻"}; 328 | const unsigned char PY_mb_sui[]= {"随穗碎虽岁尿隋绥髓遂隧祟谇荽濉邃燧眭睢"}; 329 | const unsigned char PY_mb_sun[]= {"损孙笋荪狲飧榫隼"}; 330 | const unsigned char PY_mb_suo[]= {"所缩锁索莎蓑梭唆琐唢嗦嗍娑桫挲睃羧"}; 331 | const unsigned char PY_mb_t[]= {"他同它唐谭陶汤童涂田佟提题体图天头通条特土团统台她太套铁"}; 332 | const unsigned char PY_mb_ta[]= {"他它她塔踏塌獭挞蹋拓嗒闼溻漯遢榻沓铊趿鳎"}; 333 | const unsigned char PY_mb_tai[]= {"台太态胎抬泰苔酞汰邰薹呔骀肽炱钛跆鲐"}; 334 | const unsigned char PY_mb_tan[]= {"谈碳探炭弹坦贪滩坍摊瘫坛檀痰潭谭毯袒叹郯澹昙忐钽锬镡"}; 335 | const unsigned char PY_mb_tang[]= {"堂糖唐塘汤搪棠膛倘躺淌趟烫傥帑溏瑭樘铴镗耥螗螳羰醣"}; 336 | const unsigned char PY_mb_tao[]= {"套讨逃陶萄桃掏涛滔绦淘鼗叨啕洮韬焘饕"}; 337 | const unsigned char PY_mb_te[]= {"特忒忑慝铽"}; 338 | const unsigned char PY_mb_teng[]= {"腾疼藤誊滕"}; 339 | const unsigned char PY_mb_ti[]= {"提题体替梯惕剔踢锑蹄啼嚏涕剃屉倜荑悌逖绨缇鹈裼醍扌"}; 340 | const unsigned char PY_mb_tian[]= {"天田添填甜佃恬舔腆掭忝阗殄畋"}; 341 | const unsigned char PY_mb_tiao[]= {"条调跳挑迢眺佻苕祧窕蜩笤粜龆鲦髫"}; 342 | const unsigned char PY_mb_tie[]= {"铁贴帖萜餮"}; 343 | const unsigned char PY_mb_ting[]= {"听停庭挺廷厅烃汀亭艇莛葶婷梃町铤蜓霆"}; 344 | const unsigned char PY_mb_tong[]= {"同通统铜痛筒童桶侗恫桐酮瞳彤捅佟仝垌茼嗵峒恸潼砼"}; 345 | const unsigned char PY_mb_tou[]= {"头投透偷钭骰"}; 346 | const unsigned char PY_mb_tu[]= {"图土突途徒凸涂吐兔屠秃堍荼菟钍酴"}; 347 | const unsigned char PY_mb_tuan[]= {"团湍抟彖疃图案"}; 348 | const unsigned char PY_mb_tui[]= {"推退腿颓蜕褪忒煺"}; 349 | const unsigned char PY_mb_tun[]= {"囤褪吞屯臀氽饨暾豚"}; 350 | const unsigned char PY_mb_tuo[]= {"脱拖托妥椭舵魄鸵陀驮驼拓唾乇佗坨庹沱柝柁橐砣铊箨酡跎鼍"}; 351 | const unsigned char PY_mb_w[]= {"为我无王汪卫魏吴韦闻乌邬翁温伍问外五位物委完温万文往武务围误晚"}; 352 | const unsigned char PY_mb_wa[]= {"瓦挖凹哇蛙洼娃袜佤娲腽"}; 353 | const unsigned char PY_mb_wai[]= {"外歪崴"}; 354 | const unsigned char PY_mb_wan[]= {"完万晚弯碗顽湾挽玩蔓娩豌丸烷皖惋宛婉腕剜芄莞菀纨绾琬脘畹蜿"}; 355 | const unsigned char PY_mb_wang[]= {"往王望网忘妄亡旺芒汪枉罔尢惘辋魍"}; 356 | const unsigned char PY_mb_wei[]= {"为位委围维唯卫微伟未威危尾谓喂味胃魏伪遗违韦畏纬巍桅惟潍苇萎蔚渭尉慰偎诿隈隗圩葳薇囗帏帷崴嵬猥猬闱沩洧涠逶娓玮韪軎炜煨痿艉鲔"}; 357 | const unsigned char PY_mb_wen[]= {"问温文稳纹闻蚊瘟吻紊刎阌汶璺雯亠"}; 358 | const unsigned char PY_mb_weng[]= {"嗡翁瓮蓊蕹"}; 359 | const unsigned char PY_mb_wo[]= {"我握窝蜗涡沃挝卧斡倭莴喔幄渥肟硪龌"}; 360 | const unsigned char PY_mb_wu[]= {"无五物武务误伍舞污悟雾午恶屋乌吴亡诬钨巫呜芜梧吾毋捂侮坞戊晤勿兀仵阢邬圬芴唔庑怃忤浯寤迕妩婺骛杌牾於焐鹉鹜痦蜈鋈鼯"}; 361 | const unsigned char PY_mb_x[]= {"学下行许徐邢萧肖薛熊解项习冼小线性新些想心向相系席现西修象先形"}; 362 | const unsigned char PY_mb_xi[]= {"系席西习细吸析喜洗铣稀戏隙希息袭锡烯牺悉惜溪腊栖昔熙硒矽晰嘻膝夕熄汐犀檄媳僖兮隰郗茜菥葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷歙熹禊禧皙穸裼蜥螅蟋舄舾羲粞翕醯蹊鼷"}; 363 | const unsigned char PY_mb_xia[]= {"下夏吓狭霞唬瞎虾匣辖暇峡侠厦呷狎遐瑕柙硖瘕罅黠"}; 364 | const unsigned char PY_mb_xian[]= {"线现先县限见显鲜献险陷宪纤洗掀弦铣腺锨仙咸贤衔舷闲涎嫌馅羡冼苋莶藓岘猃暹娴氙燹祆鹇痫蚬筅籼酰跣跹霰"}; 365 | const unsigned char PY_mb_xiang[]= {"想向相象响项箱乡降香像详橡享湘厢镶襄翔祥巷芗葙饷庠骧缃蟓鲞飨"}; 366 | const unsigned char PY_mb_xiao[]= {"小消削效笑校销硝萧肖孝霄哮嚣宵淆晓啸哓崤潇逍骁绡枭枵蛸筱箫魈"}; 367 | const unsigned char PY_mb_xie[]= {"些解写斜谢协械叶血卸屑鞋歇邪胁蟹泄泻契楔蝎挟携谐懈偕亵勰燮薤撷獬廨渫瀣邂绁缬榭榍颉躞"}; 368 | const unsigned char PY_mb_xin[]= {"新心信锌芯辛寻欣薪忻衅囟馨昕歆镡鑫"}; 369 | const unsigned char PY_mb_xing[]= {"行性形型星兴省醒姓幸腥猩惺刑邢杏陉荇荥擤饧悻硎"}; 370 | const unsigned char PY_mb_xiong[]= {"雄胸兄凶熊匈汹芎"}; 371 | const unsigned char PY_mb_xiu[]= {"修锈休袖秀朽宿臭羞嗅绣咻岫馐庥溴鸺貅髹"}; 372 | const unsigned char PY_mb_xu[]= {"续许须需序虚絮畜叙蓄绪徐墟戌嘘酗旭恤婿吁诩勖圩蓿洫浒溆顼栩煦砉盱胥糈醑"}; 373 | const unsigned char PY_mb_xuan[]= {"选旋宣悬玄券轩喧癣眩绚儇谖萱揎泫渲漩璇楦暄炫煊碹铉镟痃"}; 374 | const unsigned char PY_mb_xue[]= {"学血削雪穴靴薛谑噱泶踅鳕"}; 375 | const unsigned char PY_mb_xun[]= {"训旬迅讯寻循巡荤浚勋熏询驯殉汛逊巽郇埙荀蕈薰峋徇獯恂洵浔曛窨醺鲟彐"}; 376 | const unsigned char PY_mb_y[]= {"一有杨严余阎姚颜袁燕俞岳恽乐叶羊尹尤用要以于也样义与由压员月意又运原油验"}; 377 | const unsigned char PY_mb_ya[]= {"压亚呀牙芽雅蚜鸭匹押鸦丫崖衙涯哑讶伢垭揠岈迓娅琊桠氩砑睚痖"}; 378 | const unsigned char PY_mb_yan[]= {"验研严颜眼言盐演岩沿烟延掩宴炎燕衍铅焉咽阉淹蜒阎奄艳堰厌砚雁唁彦焰谚殷厣赝剡俨偃兖谳阽郾鄢芫菸崦恹闫阏湮滟妍嫣琰檐晏胭腌焱罨筵酽魇餍鼹"}; 379 | const unsigned char PY_mb_yang[]= {"样养氧扬洋阳羊秧央杨仰殃鸯佯疡痒漾徉怏泱炀烊恙蛘鞅"}; 380 | const unsigned char PY_mb_yao[]= {"要药约摇腰咬邀耀陶侥疟妖瑶尧遥窑谣姚舀钥夭爻吆崾徭幺珧杳轺曜肴铫鹞窈繇鳐"}; 381 | const unsigned char PY_mb_ye[]= {"也业页叶液夜野爷冶邪哗咽椰噎耶掖曳腋拽靥谒邺揶晔烨铘"}; 382 | const unsigned char PY_mb_yi[]= {"一以义意已移医议依易乙艺益异宜仪亿遗伊役衣疑亦谊翼译抑忆疫壹揖铱颐夷胰沂姨彝椅蚁倚矣邑屹臆逸肄裔毅溢诣翌绎刈劓仡佚佾诒圯埸懿苡荑薏弈奕挹弋呓咦咿嗌噫峄嶷猗饴怿怡悒漪迤驿缢殪轶贻欹旖熠眙钇镒镱痍瘗癔翊蜴舣羿翳酏黟衤"}; 383 | const unsigned char PY_mb_yin[]= {"因引阴印音银烟隐饮荫茵殷姻吟淫寅尹胤鄞圻垠堙茚吲喑狺夤洇湮氤铟瘾窨蚓霪龈"}; 384 | const unsigned char PY_mb_ying[]= {"应影硬营英映迎樱婴鹰缨莹萤荧蝇赢盈颖嬴郢茔荥莺萦蓥撄嘤膺滢潆瀛瑛璎楹媵鹦瘿颍罂"}; 385 | const unsigned char PY_mb_yo[]= {"育哟唷"}; 386 | const unsigned char PY_mb_yong[]= {"用勇永拥涌蛹庸佣臃痈雍踊咏泳恿俑壅墉喁慵邕镛甬鳙饔"}; 387 | const unsigned char PY_mb_you[]= {"有由又油右友优幼游尤诱犹幽悠忧邮铀酉佑釉卣攸侑莠莜莸尢呦囿宥柚猷牖铕疣蚰蚴蝣蝤繇鱿黝鼬"}; 388 | const unsigned char PY_mb_yu[]= {"于与育鱼雨玉余遇预域语愈渔予羽愚御谷欲宇蔚尉迂淤盂榆虞舆俞逾愉渝隅娱屿禹芋郁吁喻峪狱誉浴寓裕豫驭粥禺毓伛俣谀谕萸菀蓣揄圄圉嵛狳饫馀庾阈鬻妪妤纡瑜昱觎腴腧欤於煜熨燠聿钰鹆鹬瘐瘀窬窳蜮蝓竽臾舁雩龉肀"}; 389 | const unsigned char PY_mb_yuan[]= {"员原圆源元远愿院缘援园怨鸳渊冤垣袁辕猿苑垸塬芫掾圜沅媛瑗橼爰眢鸢螈箢鼋"}; 390 | const unsigned char PY_mb_yue[]= {"月说越约乐跃曰阅钥岳粤悦龠瀹栎樾刖钺"}; 391 | const unsigned char PY_mb_yun[]= {"运员云匀均允孕耘郧陨蕴酝晕韵郓芸狁恽愠纭韫殒昀氲熨"}; 392 | const unsigned char PY_mb_z[]= {"在这主中张章赵曾郑周邹朱种着祝甄庄宗詹臧祖左展争战作正之制重组治只子自质指"}; 393 | const unsigned char PY_mb_za[]= {"杂扎咱匝砸咋咂"}; 394 | const unsigned char PY_mb_zai[]= {"在再载栽灾仔哉宰崽甾"}; 395 | const unsigned char PY_mb_zan[]= {"赞咱暂攒拶瓒昝簪糌趱錾"}; 396 | const unsigned char PY_mb_zang[]= {"藏脏葬赃奘驵臧"}; 397 | const unsigned char PY_mb_zao[]= {"造早遭燥凿糟枣皂藻澡蚤躁噪灶唣"}; 398 | const unsigned char PY_mb_ze[]= {"则择责侧泽咋仄赜啧帻迮昃笮箦舴"}; 399 | const unsigned char PY_mb_zei[]= {"贼"}; 400 | const unsigned char PY_mb_zen[]= {"怎谮"}; 401 | const unsigned char PY_mb_zeng[]= {"增曾综憎赠缯甑罾锃"}; 402 | const unsigned char PY_mb_zh[]= {"扎炸摘债战展长张章钟着照找这真争正政之制治只中周州主住抓转专撰赚装状准"}; 403 | const unsigned char PY_mb_zha[]= {"查扎炸闸铡轧渣蜡喳札眨栅榨咋乍诈柞揸吒咤哳喋楂砟痄蚱齄"}; 404 | const unsigned char PY_mb_zhai[]= {"寨侧择摘窄斋翟祭宅债砦瘵"}; 405 | const unsigned char PY_mb_zhan[]= {"战展站占粘颤瞻毡詹沾盏斩辗崭蘸栈湛绽谵搌旃"}; 406 | const unsigned char PY_mb_zhang[]={"长张章掌仗障胀涨账樟彰漳杖丈帐瘴仉鄣幛嶂獐嫜璋蟑"}; 407 | const unsigned char PY_mb_zhao[]= {"着照找招朝召赵爪罩沼兆嘲昭肇诏啁棹钊笊"}; 408 | const unsigned char PY_mb_zhe[]= {"这着者折哲浙遮蛰辙锗蔗谪摺柘辄磔鹧褶蜇赭"}; 409 | const unsigned char PY_mb_zhen[]= {"真针阵镇振震珍诊斟甄砧臻贞侦枕疹圳蓁浈溱缜桢椹榛轸赈胗朕祯畛稹鸩箴"}; 410 | const unsigned char PY_mb_zheng[]= {"争正政整证征蒸症丁郑挣睁狰怔拯帧诤峥徵钲铮筝"}; 411 | const unsigned char PY_mb_zhi[]= {"之制治只质指直支织止至置志值知识执职植纸致枝殖脂智氏肢秩址滞汁芝吱蜘侄趾旨挚掷帜峙稚炙痔窒卮陟郅埴芷摭帙徵忮彘咫骘栉枳栀桎轵轾贽胝膣祉祗黹雉鸷痣蛭絷酯跖踬踯豸觯"}; 412 | const unsigned char PY_mb_zhong[]= {"中种重众钟终忠肿仲盅衷冢忪锺螽舯踵"}; 413 | const unsigned char PY_mb_zhou[]= {"轴周洲州皱骤舟诌粥肘帚咒宙昼荮啁妯纣绉胄碡籀繇酎"}; 414 | const unsigned char PY_mb_zhu[]= {"主注著住助猪朱铸属株筑柱术驻逐祝竹贮珠诸蛛诛烛煮拄瞩嘱蛀伫侏邾茱洙渚潴杼槠橥炷铢疰瘃褚竺箸舳翥躅麈"}; 415 | const unsigned char PY_mb_zhua[]= {"抓爪挝"}; 416 | const unsigned char PY_mb_zhuai[]= {"转曳拽嘬"}; 417 | const unsigned char PY_mb_zhuan[]= {"转专传砖撰赚篆啭馔沌颛"}; 418 | const unsigned char PY_mb_zhuang[]={"装状壮庄撞幢桩妆僮奘"}; 419 | const unsigned char PY_mb_zhui[]= {"追锥椎赘坠缀惴骓缒"}; 420 | const unsigned char PY_mb_zhun[]= {"准屯谆肫窀"}; 421 | const unsigned char PY_mb_zhuo[]= {"着著捉桌缴拙卓琢茁酌啄灼浊倬诼擢浞涿濯棹焯禚斫镯"}; 422 | const unsigned char PY_mb_zi[]= {"子自资字紫仔籽姿吱兹咨滋淄孜滓渍谘茈呲嵫姊孳缁梓辎赀恣眦锱秭耔笫粢趑觜訾龇鲻髭"}; 423 | const unsigned char PY_mb_zong[]= {"总纵宗综棕鬃踪偬枞腙粽"}; 424 | const unsigned char PY_mb_zou[]= {"走邹奏揍诹陬鄹驺鲰"}; 425 | const unsigned char PY_mb_zu[]= {"组族足阻祖租卒诅俎菹镞"}; 426 | const unsigned char PY_mb_zuan[]= {"钻赚纂攥缵躜"}; 427 | const unsigned char PY_mb_zui[]= {"最罪嘴堆咀醉蕞"}; 428 | const unsigned char PY_mb_zun[]= {"尊遵撙樽鳟"}; 429 | const unsigned char PY_mb_zuo[]= {"作做左座坐昨撮凿搓琢佐柞阼唑嘬怍胙祚笮"}; 430 | 431 | 432 | /*英文输入查询码表*/ 433 | typedef struct 434 | { 435 | const int key; 436 | const char* Letter; 437 | }T9EN_IDX; 438 | 439 | const T9EN_IDX t9EN_index[] = { 440 | {2,"abcABC"}, 441 | {3,"defDEF"}, 442 | {4,"ghiGHI"}, 443 | {5,"jklJKL"}, 444 | {6,"mnoMNO"}, 445 | {7,"pqrsPQRS"}, 446 | {8,"tuvTUV"}, 447 | {9,"wxyzWXYZ"} 448 | }; 449 | 450 | /*拼音输入法查询码表*/ 451 | typedef struct 452 | { 453 | const char *T9; 454 | const char *PY; 455 | const unsigned char *MB; 456 | }T9PY_IDX; 457 | 458 | const T9PY_IDX t9PY_index[] ={ 459 | {"2","a",PY_mb_a}, 460 | {"2","b",PY_mb_b}, 461 | {"2","c",PY_mb_c}, 462 | {"3","d",PY_mb_d}, 463 | {"3","e",PY_mb_e}, 464 | {"3","f",PY_mb_f}, 465 | {"4","g",PY_mb_g}, 466 | {"4","h",PY_mb_h}, 467 | {"5","j",PY_mb_j}, 468 | {"5","k",PY_mb_k}, 469 | {"5","l",PY_mb_l}, 470 | {"6","m",PY_mb_m}, 471 | {"6","n",PY_mb_n}, 472 | {"6","o",PY_mb_o}, 473 | {"7","p",PY_mb_p}, 474 | {"7","q",PY_mb_q}, 475 | {"7","r",PY_mb_r}, 476 | {"7","s",PY_mb_s}, 477 | {"8","t",PY_mb_t}, 478 | {"9","w",PY_mb_w}, 479 | {"9","x",PY_mb_x}, 480 | {"9","y",PY_mb_y}, 481 | {"9","z",PY_mb_z}, 482 | {"22","ba",PY_mb_ba}, 483 | {"22","ca",PY_mb_ca}, 484 | {"23","ce",PY_mb_ce}, 485 | {"23","be",PY_mb_bei}, 486 | {"24","ai",PY_mb_ai}, 487 | {"24","bi",PY_mb_bi}, 488 | {"24","ch",PY_mb_ch}, 489 | {"24","ci",PY_mb_ci}, 490 | {"26","co",PY_mb_cou}, 491 | {"26","bo",PY_mb_bo}, 492 | {"26","an",PY_mb_an}, 493 | {"26","ao",PY_mb_ao}, 494 | {"28","bu",PY_mb_bu}, 495 | {"28","cu",PY_mb_cu}, 496 | {"32","da",PY_mb_da}, 497 | {"32","fa",PY_mb_fa}, 498 | {"33","de",PY_mb_de}, 499 | {"33","fe",PY_mb_fei}, 500 | {"34","di",PY_mb_di}, 501 | {"34","ei",PY_mb_ei}, 502 | {"36","en",PY_mb_en}, 503 | {"36","fo",PY_mb_fo}, 504 | {"37","er",PY_mb_er}, 505 | {"36","do",PY_mb_dou}, 506 | {"38","du",PY_mb_du}, 507 | {"38","fu",PY_mb_fu}, 508 | {"42","ga",PY_mb_ga}, 509 | {"42","ha",PY_mb_ha}, 510 | {"43","ge",PY_mb_ge}, 511 | {"43","he",PY_mb_he}, 512 | {"46","go",PY_mb_gou}, 513 | {"46","ho",PY_mb_hou}, 514 | {"48","gu",PY_mb_gu}, 515 | {"48","hu",PY_mb_hu}, 516 | {"52","ka",PY_mb_ka}, 517 | {"52","la",PY_mb_la}, 518 | {"53","le",PY_mb_le}, 519 | {"53","ke",PY_mb_ke}, 520 | {"54","ji",PY_mb_ji}, 521 | {"54","li",PY_mb_li}, 522 | {"56","ko",PY_mb_kou}, 523 | {"56","lo",PY_mb_lo}, 524 | {"58","lu",PY_mb_lu}, 525 | {"58","lv",PY_mb_lv}, 526 | {"58","ju",PY_mb_ju}, 527 | {"58","ku",PY_mb_ku}, 528 | {"62","ma",PY_mb_ma}, 529 | {"62","na",PY_mb_na}, 530 | {"63","me",PY_mb_me}, 531 | {"63","ne",PY_mb_ne}, 532 | {"64","mi",PY_mb_mi}, 533 | {"64","ni",PY_mb_ni}, 534 | {"66","mo",PY_mb_mo}, 535 | {"66","no",PY_mb_nou}, 536 | {"68","mu",PY_mb_mu}, 537 | {"68","nu",PY_mb_nu}, 538 | {"68","nv",PY_mb_nv}, 539 | {"68","ou",PY_mb_ou}, 540 | {"72","pa",PY_mb_pa}, 541 | {"72","ra",PY_mb_ran}, 542 | {"72","sa",PY_mb_sa}, 543 | {"73","pe",PY_mb_pei}, 544 | {"73","re",PY_mb_re}, 545 | {"73","se",PY_mb_se}, 546 | {"74","pi",PY_mb_pi}, 547 | {"74","qi",PY_mb_qi}, 548 | {"74","ri",PY_mb_ri}, 549 | {"74","sh",PY_mb_sh}, 550 | {"74","si",PY_mb_si}, 551 | {"76","so",PY_mb_sou}, 552 | {"76","po",PY_mb_po}, 553 | {"76","ro",PY_mb_rou}, 554 | {"78","pu",PY_mb_pu}, 555 | {"78","qu",PY_mb_qu}, 556 | {"78","ru",PY_mb_ru}, 557 | {"78","su",PY_mb_su}, 558 | {"82","ta",PY_mb_ta}, 559 | {"83","te",PY_mb_te}, 560 | {"84","ti",PY_mb_ti}, 561 | {"86","to",PY_mb_tou}, 562 | {"88","tu",PY_mb_tu}, 563 | {"92","wa",PY_mb_wa}, 564 | {"92","ya",PY_mb_ya}, 565 | {"92","za",PY_mb_za}, 566 | {"93","ze",PY_mb_ze}, 567 | {"93","ye",PY_mb_ye}, 568 | {"94","yi",PY_mb_yi}, 569 | {"94","xi",PY_mb_xi}, 570 | {"94","zh",PY_mb_zh}, 571 | {"94","zi",PY_mb_zi}, 572 | {"96","zo",PY_mb_zou}, 573 | {"96","wo",PY_mb_wo}, 574 | {"96","yo",PY_mb_yo}, 575 | {"98","wu",PY_mb_wu}, 576 | {"98","xu",PY_mb_xu}, 577 | {"98","yu",PY_mb_yu}, 578 | {"98","zu",PY_mb_zu}, 579 | {"224","bai",PY_mb_bai}, 580 | {"224","cai",PY_mb_cai}, 581 | {"226","can",PY_mb_can}, 582 | {"226","cao",PY_mb_cao}, 583 | {"226","ban",PY_mb_ban}, 584 | {"226","bao",PY_mb_bao}, 585 | {"234","bei",PY_mb_bei}, 586 | {"236","ben",PY_mb_ben}, 587 | {"236","cen",PY_mb_cen}, 588 | {"242","bia",PY_mb_bian}, 589 | {"242","cha",PY_mb_cha}, 590 | {"243","che",PY_mb_che}, 591 | {"243","bie",PY_mb_bie}, 592 | {"244","chi",PY_mb_chi}, 593 | {"246","bin",PY_mb_bin}, 594 | {"246","cho",PY_mb_chou}, 595 | {"248","chu",PY_mb_chu}, 596 | {"264","ang",PY_mb_ang}, 597 | {"266","con",PY_mb_cong}, 598 | {"268","cou",PY_mb_cou}, 599 | {"282","cua",PY_mb_cuan}, 600 | {"284","cui",PY_mb_cui}, 601 | {"286","cun",PY_mb_cun}, 602 | {"286","cuo",PY_mb_cuo}, 603 | {"324","dai",PY_mb_dai}, 604 | {"326","dan",PY_mb_dan}, 605 | {"326","dao",PY_mb_dao}, 606 | {"326","fan",PY_mb_fan}, 607 | {"334","fei",PY_mb_fei}, 608 | {"336","fen",PY_mb_fen}, 609 | {"336","den",PY_mb_deng}, 610 | {"342","dia",PY_mb_dia}, 611 | {"343","die",PY_mb_die}, 612 | {"346","din",PY_mb_ding}, 613 | {"348","diu",PY_mb_diu}, 614 | {"366","don",PY_mb_dong}, 615 | {"368","dou",PY_mb_dou}, 616 | {"368","fou",PY_mb_fou}, 617 | {"382","dua",PY_mb_duan}, 618 | {"384","dui",PY_mb_dui}, 619 | {"386","dun",PY_mb_dun}, 620 | {"386","duo",PY_mb_duo}, 621 | {"424","gai",PY_mb_gai}, 622 | {"424","hai",PY_mb_hai}, 623 | {"426","han",PY_mb_han}, 624 | {"426","gan",PY_mb_gan}, 625 | {"426","gao",PY_mb_gao}, 626 | {"426","hao",PY_mb_hao}, 627 | {"434","hei",PY_mb_hei}, 628 | {"434","gei",PY_mb_gei}, 629 | {"436","gen",PY_mb_gen}, 630 | {"436","hen",PY_mb_hen}, 631 | {"466","gon",PY_mb_gong}, 632 | {"466","hon",PY_mb_hong}, 633 | {"468","gou",PY_mb_gou}, 634 | {"468","hou",PY_mb_hou}, 635 | {"482","hua",PY_mb_hua}, 636 | {"482","gua",PY_mb_gua}, 637 | {"484","gui",PY_mb_gui}, 638 | {"484","hui",PY_mb_hui}, 639 | {"486","hun",PY_mb_hun}, 640 | {"486","huo",PY_mb_huo}, 641 | {"486","gun",PY_mb_gun}, 642 | {"486","guo",PY_mb_guo}, 643 | {"524","kai",PY_mb_kai}, 644 | {"524","lai",PY_mb_lai}, 645 | {"526","lan",PY_mb_lan}, 646 | {"526","kan",PY_mb_kan}, 647 | {"526","kao",PY_mb_kao}, 648 | {"526","lao",PY_mb_lao}, 649 | {"534","lei",PY_mb_lei}, 650 | {"536","len",PY_mb_leng}, 651 | {"536","ken",PY_mb_ken}, 652 | {"542","jia",PY_mb_jia}, 653 | {"542","lia",PY_mb_lia}, 654 | {"543","jie",PY_mb_jie}, 655 | {"543","lie",PY_mb_lie}, 656 | {"546","lin",PY_mb_lin}, 657 | {"546","jin",PY_mb_jin}, 658 | {"546","jio",PY_mb_jiong}, 659 | {"548","jiu",PY_mb_jiu}, 660 | {"548","liu",PY_mb_liu}, 661 | {"566","lon",PY_mb_long}, 662 | {"566","kon",PY_mb_kong}, 663 | {"568","kou",PY_mb_kou}, 664 | {"568","lou",PY_mb_lou}, 665 | {"582","lua",PY_mb_luan}, 666 | {"582","kua",PY_mb_kua}, 667 | {"582","jua",PY_mb_juan}, 668 | {"583","jue",PY_mb_jue}, 669 | {"583","lue",PY_mb_lue}, 670 | {"584","kui",PY_mb_kui}, 671 | {"586","lun",PY_mb_lun}, 672 | {"586","luo",PY_mb_luo}, 673 | {"586","kun",PY_mb_kun}, 674 | {"586","kuo",PY_mb_kuo}, 675 | {"586","jun",PY_mb_jun}, 676 | {"624","mai",PY_mb_mai}, 677 | {"624","nai",PY_mb_nai}, 678 | {"626","nan",PY_mb_nan}, 679 | {"626","man",PY_mb_man}, 680 | {"626","mao",PY_mb_mao}, 681 | {"626","nao",PY_mb_nao}, 682 | {"634","nei",PY_mb_nei}, 683 | {"634","mei",PY_mb_mei}, 684 | {"636","nen",PY_mb_nen}, 685 | {"636","men",PY_mb_men}, 686 | {"642","mia",PY_mb_mian}, 687 | {"642","nia",PY_mb_nian}, 688 | {"643","mie",PY_mb_mie}, 689 | {"643","nie",PY_mb_nie}, 690 | {"646","nin",PY_mb_nin}, 691 | {"646","min",PY_mb_min}, 692 | {"648","miu",PY_mb_miu}, 693 | {"648","niu",PY_mb_niu}, 694 | {"666","non",PY_mb_nong}, 695 | {"668","mou",PY_mb_mou}, 696 | {"668","nou",PY_mb_nou}, 697 | {"682","nua",PY_mb_nuan}, 698 | {"683","nve",PY_mb_nve}, 699 | {"686","nuo",PY_mb_nuo}, 700 | {"724","pai",PY_mb_pai}, 701 | {"734","pei",PY_mb_pei}, 702 | {"724","sai",PY_mb_sai}, 703 | {"726","san",PY_mb_san}, 704 | {"726","pan",PY_mb_pan}, 705 | {"726","pao",PY_mb_pao}, 706 | {"726","ran",PY_mb_ran}, 707 | {"726","rao",PY_mb_rao}, 708 | {"726","sao",PY_mb_sao}, 709 | {"736","pen",PY_mb_pen}, 710 | {"736","sen",PY_mb_sen}, 711 | {"736","ren",PY_mb_ren}, 712 | {"742","pia",PY_mb_pian}, 713 | {"742","qia",PY_mb_qia}, 714 | {"742","sha",PY_mb_sha}, 715 | {"743","pie",PY_mb_pie}, 716 | {"743","qie",PY_mb_qie}, 717 | {"743","she",PY_mb_she}, 718 | {"744","shi",PY_mb_shi}, 719 | {"748","shu",PY_mb_shu}, 720 | {"746","qin",PY_mb_qin}, 721 | {"746","pin",PY_mb_pin}, 722 | {"746","qio",PY_mb_qiong}, 723 | {"746","sho",PY_mb_shou}, 724 | {"748","qiu",PY_mb_qiu}, 725 | {"766","ron",PY_mb_rong}, 726 | {"768","pou",PY_mb_pou}, 727 | {"768","rou",PY_mb_rou}, 728 | {"766","son",PY_mb_song}, 729 | {"768","sou",PY_mb_sou}, 730 | {"782","sua",PY_mb_suan}, 731 | {"782","rua",PY_mb_ruan}, 732 | {"782","qua",PY_mb_quan}, 733 | {"783","que",PY_mb_que}, 734 | {"784","rui",PY_mb_rui}, 735 | {"784","sui",PY_mb_sui}, 736 | {"786","sun",PY_mb_sun}, 737 | {"786","suo",PY_mb_suo}, 738 | {"786","run",PY_mb_run}, 739 | {"786","ruo",PY_mb_ruo}, 740 | {"786","qun",PY_mb_qun}, 741 | {"824","tai",PY_mb_tai}, 742 | {"826","tan",PY_mb_tan}, 743 | {"826","tao",PY_mb_tao}, 744 | {"836","ten",PY_mb_teng}, 745 | {"842","tia",PY_mb_tian}, 746 | {"843","tie",PY_mb_tie}, 747 | {"846","tin",PY_mb_ting}, 748 | {"866","ton",PY_mb_tong}, 749 | {"868","tou",PY_mb_tou}, 750 | {"882","tua",PY_mb_tuan}, 751 | {"884","tui",PY_mb_tui}, 752 | {"886","tun",PY_mb_tun}, 753 | {"886","tuo",PY_mb_tuo}, 754 | {"924","wai",PY_mb_wai}, 755 | {"924","zai",PY_mb_zai}, 756 | {"926","zan",PY_mb_zan}, 757 | {"926","wan",PY_mb_wan}, 758 | {"926","yan",PY_mb_yan}, 759 | {"926","yao",PY_mb_yao}, 760 | {"926","zao",PY_mb_zao}, 761 | {"934","zei",PY_mb_zei}, 762 | {"934","wei",PY_mb_wei}, 763 | {"936","zen",PY_mb_zen}, 764 | {"936","wen",PY_mb_wen}, 765 | {"942","xia",PY_mb_xia}, 766 | {"942","zha",PY_mb_zha}, 767 | {"943","xie",PY_mb_xie}, 768 | {"943","zhe",PY_mb_zhe}, 769 | {"944","zhi",PY_mb_zhi}, 770 | {"946","zho",PY_mb_zhou}, 771 | {"946","xin",PY_mb_xin}, 772 | {"946","xio",PY_mb_xiong}, 773 | {"946","yin",PY_mb_yin}, 774 | {"948","xiu",PY_mb_xiu}, 775 | {"948","zhu",PY_mb_zhu}, 776 | {"966","yon",PY_mb_yong}, 777 | {"966","zon",PY_mb_zong}, 778 | {"968","you",PY_mb_you}, 779 | {"968","zou",PY_mb_zou}, 780 | {"982","zua",PY_mb_zuan}, 781 | {"982","yua",PY_mb_yuan}, 782 | {"982","xua",PY_mb_xuan}, 783 | {"983","xue",PY_mb_xue}, 784 | {"983","yue",PY_mb_yue}, 785 | {"984","zui",PY_mb_zui}, 786 | {"986","zun",PY_mb_zun}, 787 | {"986","zuo",PY_mb_zuo}, 788 | {"986","yun",PY_mb_yun}, 789 | {"986","xun",PY_mb_xun}, 790 | {"2264","bang",PY_mb_bang}, 791 | {"2364","beng",PY_mb_beng}, 792 | {"2426","bian",PY_mb_bian}, 793 | {"2426","biao",PY_mb_biao}, 794 | {"2464","bing",PY_mb_bing}, 795 | {"2264","cang",PY_mb_cang}, 796 | {"2364","ceng",PY_mb_ceng}, 797 | {"2424","chai",PY_mb_chai}, 798 | {"2426","chan",PY_mb_chan}, 799 | {"2426","chao",PY_mb_chao}, 800 | {"2436","chen",PY_mb_chen}, 801 | {"2466","chon",PY_mb_chong}, 802 | {"2468","chou",PY_mb_chou}, 803 | {"2482","chua",PY_mb_chuai}, 804 | {"2484","chui",PY_mb_chui}, 805 | {"2486","chun",PY_mb_chun}, 806 | {"2486","chuo",PY_mb_chuo}, 807 | {"2664","cong",PY_mb_cong}, 808 | {"2826","cuan",PY_mb_cuan}, 809 | {"3264","dang",PY_mb_dang}, 810 | {"3264","fang",PY_mb_fang}, 811 | {"3364","feng",PY_mb_feng}, 812 | {"3364","deng",PY_mb_deng}, 813 | {"3426","dian",PY_mb_dian}, 814 | {"3426","diao",PY_mb_diao}, 815 | {"3464","ding",PY_mb_ding}, 816 | {"3664","dong",PY_mb_dong}, 817 | {"3826","duan",PY_mb_duan}, 818 | {"4264","gang",PY_mb_gang}, 819 | {"4364","geng",PY_mb_geng}, 820 | {"4664","gong",PY_mb_gong}, 821 | {"4824","guai",PY_mb_guai}, 822 | {"4826","guan",PY_mb_guan}, 823 | {"4264","hang",PY_mb_hang}, 824 | {"4364","heng",PY_mb_heng}, 825 | {"4664","hong",PY_mb_hong}, 826 | {"4824","huai",PY_mb_huai}, 827 | {"4826","huan",PY_mb_huan}, 828 | {"5264","kang",PY_mb_kang}, 829 | {"5264","lang",PY_mb_lang}, 830 | {"5364","leng",PY_mb_leng}, 831 | {"5364","keng",PY_mb_keng}, 832 | {"5426","lian",PY_mb_lian}, 833 | {"5426","liao",PY_mb_liao}, 834 | {"5426","jian",PY_mb_jian}, 835 | {"5426","jiao",PY_mb_jiao}, 836 | {"5464","jing",PY_mb_jing}, 837 | {"5464","ling",PY_mb_ling}, 838 | {"5466","jion",PY_mb_jiong}, 839 | {"5664","long",PY_mb_long}, 840 | {"5664","kong",PY_mb_kong}, 841 | {"5824","kuai",PY_mb_kuai}, 842 | {"5826","kuan",PY_mb_kuan}, 843 | {"5826","luan",PY_mb_luan}, 844 | {"5826","juan",PY_mb_juan}, 845 | {"6264","mang",PY_mb_mang}, 846 | {"6264","nang",PY_mb_nang}, 847 | {"6364","meng",PY_mb_meng}, 848 | {"6364","neng",PY_mb_neng}, 849 | {"6426","mian",PY_mb_mian}, 850 | {"6426","miao",PY_mb_miao}, 851 | {"6426","nian",PY_mb_nian}, 852 | {"6426","niao",PY_mb_niao}, 853 | {"6464","ming",PY_mb_ming}, 854 | {"6464","ning",PY_mb_ning}, 855 | {"6664","nong",PY_mb_nong}, 856 | {"6826","nuan",PY_mb_nuan}, 857 | {"7264","pang",PY_mb_pang}, 858 | {"7264","rang",PY_mb_rang}, 859 | {"7264","sang",PY_mb_sang}, 860 | {"7364","peng",PY_mb_peng}, 861 | {"7364","seng",PY_mb_seng}, 862 | {"7364","reng",PY_mb_reng}, 863 | {"7424","shai",PY_mb_shai}, 864 | {"7426","shan",PY_mb_shan}, 865 | {"7426","shao",PY_mb_shao}, 866 | {"7426","pian",PY_mb_pian}, 867 | {"7426","piao",PY_mb_piao}, 868 | {"7426","qian",PY_mb_qian}, 869 | {"7426","qiao",PY_mb_qiao}, 870 | {"7436","shen",PY_mb_shen}, 871 | {"7464","ping",PY_mb_ping}, 872 | {"7464","qing",PY_mb_qing}, 873 | {"7466","qion",PY_mb_qiong}, 874 | {"7468","shou",PY_mb_shou}, 875 | {"7482","shua",PY_mb_shua}, 876 | {"7484","shui",PY_mb_shui}, 877 | {"7486","shun",PY_mb_shun}, 878 | {"7486","shuo",PY_mb_shuo}, 879 | {"7664","rong",PY_mb_rong}, 880 | {"7664","song",PY_mb_song}, 881 | {"7826","suan",PY_mb_suan}, 882 | {"7826","quan",PY_mb_quan}, 883 | {"7826","ruan",PY_mb_ruan}, 884 | {"8264","tang",PY_mb_tang}, 885 | {"8364","teng",PY_mb_teng}, 886 | {"8426","tian",PY_mb_tian}, 887 | {"8426","tiao",PY_mb_tiao}, 888 | {"8464","ting",PY_mb_ting}, 889 | {"8664","tong",PY_mb_tong}, 890 | {"8826","tuan",PY_mb_tuan}, 891 | {"9264","wang",PY_mb_wang}, 892 | {"9264","zang",PY_mb_zang}, 893 | {"9264","yang",PY_mb_yang}, 894 | {"9364","weng",PY_mb_weng}, 895 | {"9364","zeng",PY_mb_zeng}, 896 | {"9424","zhai",PY_mb_zhai}, 897 | {"9426","zhan",PY_mb_zhan}, 898 | {"9426","zhao",PY_mb_zhao}, 899 | {"9426","xian",PY_mb_xian}, 900 | {"9426","xiao",PY_mb_xiao}, 901 | {"9436","zhen",PY_mb_zhen}, 902 | {"9464","xing",PY_mb_xing}, 903 | {"9464","ying",PY_mb_ying}, 904 | {"9466","zhon",PY_mb_zhong}, 905 | {"9468","zhou",PY_mb_zhou}, 906 | {"9482","zhua",PY_mb_zhua}, 907 | {"9484","zhui",PY_mb_zhui}, 908 | {"9486","zhun",PY_mb_zhun}, 909 | {"9486","zhuo",PY_mb_zhuo}, 910 | {"9466","xion",PY_mb_xiong}, 911 | {"9664","yong",PY_mb_yong}, 912 | {"9664","zong",PY_mb_zong}, 913 | {"9826","yuan",PY_mb_yuan}, 914 | {"9826","xuan",PY_mb_xuan}, 915 | {"9826","zuan",PY_mb_zuan}, 916 | {"94264","xiang",PY_mb_xiang}, 917 | {"94264","zhang",PY_mb_zhang}, 918 | {"94364","zheng",PY_mb_zheng}, 919 | {"94664","xiong",PY_mb_xiong}, 920 | {"94664","zhong",PY_mb_zhong}, 921 | {"94824","zhuai",PY_mb_zhuai}, 922 | {"94826","zhuan",PY_mb_zhuan}, 923 | {"24264","chang",PY_mb_chang}, 924 | {"24364","cheng",PY_mb_cheng}, 925 | {"24664","chong",PY_mb_chong}, 926 | {"24824","chuai",PY_mb_chuai}, 927 | {"24826","chuan",PY_mb_chuan}, 928 | {"48264","guang",PY_mb_guang}, 929 | {"48264","huang",PY_mb_huang}, 930 | {"54264","jiang",PY_mb_jiang}, 931 | {"54264","liang",PY_mb_liang}, 932 | {"54664","jiong",PY_mb_jiong}, 933 | {"58264","kuang",PY_mb_kuang}, 934 | {"64264","niang",PY_mb_niang}, 935 | {"74264","qiang",PY_mb_qiang}, 936 | {"74264","shang",PY_mb_shang}, 937 | {"74364","sheng",PY_mb_sheng}, 938 | {"74664","qiong",PY_mb_qiong}, 939 | {"74824","shuai",PY_mb_shuai}, 940 | {"74826","shuan",PY_mb_shuan}, 941 | {"248264","chuang",PY_mb_chuang}, 942 | {"748264","shuang",PY_mb_shuang}, 943 | {"948264","zhuang",PY_mb_zhuang}, 944 | {"","",PY_mb_space} 945 | }; 946 | 947 | 948 | // 比较两个字符串的匹配情况 949 | // 返回值:0xff,表示完全匹配. 950 | // 其他,匹配的字符数 951 | int strMatch(unsigned char* str1, unsigned char* str2); 952 | //获取匹配的拼音码表 953 | //*strin,输入的字符串,形如:"726" 954 | //**matchlist,输出的匹配表. 955 | //返回值:[7],0,表示完全匹配;1,表示部分匹配(仅在没有完全匹配的时候才会出现) 956 | //[6:0],完全匹配的时候,表示完全匹配的拼音个数 957 | //部分匹配的时候,表示有效匹配的位数 958 | int getMatchedPymb(unsigned char *strin, T9PY_IDX **matchlist); 959 | 960 | 961 | bool getMatchedPyEn(int nIn, char *matchstr); 962 | //得到拼音码表. 963 | //str:输入字符串 964 | //返回值:匹配个数. 965 | //u8 get_pymb(u8* str) 966 | //{ 967 | // return get_matched_pymb(str,t9.pymb); 968 | //} 969 | #endif // FONTLIB_ZH_H 970 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | MainWindow w; 8 | w.show(); 9 | 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include "ui_mainwindow.h" 3 | #include 4 | 5 | MainWindow::MainWindow(QWidget *parent) : 6 | QMainWindow(parent), 7 | ui(new Ui::MainWindow) 8 | { 9 | ui->setupUi(this); 10 | m_pSoftKeyBoardDlg = new SoftKeyBoardDlg; 11 | ui->lineEdit_inputbox->installEventFilter(this); 12 | } 13 | 14 | MainWindow::~MainWindow() 15 | { 16 | delete ui; 17 | } 18 | 19 | 20 | bool MainWindow::eventFilter(QObject *obj, QEvent *event) 21 | { 22 | if(event->type() == QEvent::MouseButtonPress) { 23 | QMouseEvent *mouseEvent=static_cast(event); 24 | if(mouseEvent->buttons() & Qt::LeftButton) { 25 | if(obj == ui->lineEdit_inputbox) { 26 | QString value; 27 | m_pSoftKeyBoardDlg->startExec(&value); 28 | if(!value.isEmpty()) 29 | ui->lineEdit_inputbox->setText(value); 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "softkeyboarddlg.h" 5 | #include 6 | 7 | namespace Ui { 8 | class MainWindow; 9 | } 10 | 11 | class MainWindow : public QMainWindow 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit MainWindow(QWidget *parent = 0); 17 | ~MainWindow(); 18 | 19 | private: 20 | Ui::MainWindow *ui; 21 | SoftKeyBoardDlg* m_pSoftKeyBoardDlg; 22 | 23 | private slots: 24 | 25 | protected: 26 | bool eventFilter(QObject *obj, QEvent *event); 27 | }; 28 | 29 | #endif // MAINWINDOW_H 30 | -------------------------------------------------------------------------------- /mainwindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 40 21 | 80 22 | 331 23 | 41 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 0 32 | 0 33 | 400 34 | 22 35 | 36 | 37 | 38 | 39 | 40 | TopToolBarArea 41 | 42 | 43 | false 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /softkeyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dontls/qt-t9/e42fe9ff53b23c59bded7805005a8433d330a69d/softkeyboard -------------------------------------------------------------------------------- /softkeyboard.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2018-04-15T23:47:48 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | 9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 10 | 11 | TARGET = softkeyboard 12 | TEMPLATE = app 13 | 14 | # The following define makes your compiler emit warnings if you use 15 | # any feature of Qt which as been marked as deprecated (the exact warnings 16 | # depend on your compiler). Please consult the documentation of the 17 | # deprecated API in order to know how to port your code away from it. 18 | DEFINES += QT_DEPRECATED_WARNINGS 19 | 20 | # You can also make your code fail to compile if you use deprecated APIs. 21 | # In order to do so, uncomment the following line. 22 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 24 | 25 | 26 | SOURCES += \ 27 | main.cpp \ 28 | mainwindow.cpp \ 29 | fontlib_zh.cpp \ 30 | softkeyboarddlg.cpp 31 | 32 | HEADERS += \ 33 | mainwindow.h \ 34 | fontlib_zh.h \ 35 | softkeyboarddlg.h 36 | 37 | FORMS += \ 38 | mainwindow.ui \ 39 | softkeyboarddlg.ui 40 | -------------------------------------------------------------------------------- /softkeyboarddlg.cpp: -------------------------------------------------------------------------------- 1 | #include "softkeyboarddlg.h" 2 | #include "ui_softkeyboarddlg.h" 3 | #include 4 | #include 5 | 6 | #define MAX_SHOW_PY_NUM 6 7 | #define MAX_SHOW_ZH_NUM 6 8 | #define MAX_PY_LENGTH 6 9 | #define MAX_CHAR_BUTTON_CNT 16 10 | 11 | QString SoftKeyBoardDlg::sCurrentResult = NULL; 12 | const QString zhLanguage = "中"; 13 | const QString enLanguage = "En"; 14 | const QString enChars = ",.?!':@;\"/\\()_-+" 15 | "=~^#*%&|[]<>{}$¥`"; 16 | 17 | SoftKeyBoardDlg::SoftKeyBoardDlg(QWidget *parent) : 18 | QDialog(parent), 19 | ui(new Ui::SoftKeyBoardDlg) 20 | { 21 | ui->setupUi(this); 22 | this->setWindowFlags(Qt::FramelessWindowHint); 23 | this->setFixedSize(240, 320); 24 | initSpellKeyControl(); 25 | initDigitKeyControl(); 26 | initCharKeyControl(); 27 | connect(ui->pushButton_back, SIGNAL(clicked()), this, SLOT(onKeyCloseClicked())); 28 | connect(ui->pushButton_backSpace, SIGNAL(clicked()), this, SLOT(onKeyBaskspaceClicked())); 29 | connect(ui->pushButton_ok, SIGNAL(clicked()), this, SLOT(onOkClicked())); 30 | setCharButtonText(1); 31 | 32 | QPalette palette; 33 | palette.setBrush(QPalette::Background, QPixmap(":/style/background.jpg")); 34 | this->setPalette(palette); 35 | } 36 | 37 | SoftKeyBoardDlg::~SoftKeyBoardDlg() 38 | { 39 | if(mPyButtonGroup) { 40 | delete mPyButtonGroup; mPyButtonGroup = nullptr; 41 | } 42 | if(mKeyButtonGroup) { 43 | delete mKeyButtonGroup; mKeyButtonGroup = nullptr; 44 | } 45 | if(mDigitKeyButtonGroup) { 46 | delete mDigitKeyButtonGroup; mDigitKeyButtonGroup = nullptr; 47 | } 48 | if(mCharKeyButtonGroup) { 49 | delete mCharKeyButtonGroup; mCharKeyButtonGroup = nullptr; 50 | } 51 | delete ui; 52 | } 53 | 54 | /******************** 中英文键盘 ********************************/ 55 | 56 | void SoftKeyBoardDlg::initSpellKeyControl() 57 | { 58 | mPyButtonGroup = new QButtonGroup; 59 | mPyButtonGroup->addButton(ui->pushButton_py1, 1); 60 | mPyButtonGroup->addButton(ui->pushButton_py2, 2); 61 | mPyButtonGroup->addButton(ui->pushButton_py3, 3); 62 | mPyButtonGroup->addButton(ui->pushButton_py4, 4); 63 | mPyButtonGroup->addButton(ui->pushButton_py5, 5); 64 | mPyButtonGroup->addButton(ui->pushButton_py6, 6); 65 | connect(mPyButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(onPyButtonClicked(int))); 66 | 67 | mKeyButtonGroup = new QButtonGroup; 68 | mKeyButtonGroup->addButton(ui->key_1, 1); 69 | mKeyButtonGroup->addButton(ui->key_2, 2); 70 | mKeyButtonGroup->addButton(ui->key_3, 3); 71 | mKeyButtonGroup->addButton(ui->key_4, 4); 72 | mKeyButtonGroup->addButton(ui->key_5, 5); 73 | mKeyButtonGroup->addButton(ui->key_6, 6); 74 | mKeyButtonGroup->addButton(ui->key_7, 7); 75 | mKeyButtonGroup->addButton(ui->key_8, 8); 76 | mKeyButtonGroup->addButton(ui->key_9, 9); 77 | connect(mKeyButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(onKeyButtonClicked(int))); 78 | 79 | ui->label_1->installEventFilter(this); 80 | ui->label_2->installEventFilter(this); 81 | ui->label_3->installEventFilter(this); 82 | ui->label_4->installEventFilter(this); 83 | ui->label_5->installEventFilter(this); 84 | ui->label_6->installEventFilter(this); 85 | ui->key_front->installEventFilter(this); 86 | ui->key_next->installEventFilter(this); 87 | 88 | connect(ui->pushButton_change, SIGNAL(clicked()), this, SLOT(onPushButtonFontChang())); 89 | connect(ui->pushButton_null, SIGNAL(clicked()), this, SLOT(onPushButtonNull())); 90 | } 91 | 92 | 93 | //改变结果栏对应页数 94 | void SoftKeyBoardDlg::changResultPage(int page) 95 | { 96 | clearLabelText(); 97 | QString showText = getLabelResults(); 98 | if(showText.isEmpty()) { 99 | return; 100 | } 101 | ui->key_page->setText(QString("%1/%2").arg(page).arg(nPagesCount)); 102 | int startMBArray = (page - 1) * MAX_SHOW_ZH_NUM; 103 | int showCount = page < nPagesCount ? MAX_SHOW_ZH_NUM : nMBCount - (page - 1) * MAX_SHOW_ZH_NUM; 104 | // qDebug() << currPage << showCount; 105 | for(int i = 0; i < showCount; i++) { 106 | this->findChild(QString("label_%1").arg(i+1))->setText(showText.at(startMBArray + i)); 107 | } 108 | } 109 | 110 | bool SoftKeyBoardDlg::eventFilter(QObject *obj, QEvent *event) 111 | { 112 | int labelIndex = 0; 113 | if(event->type() == QEvent::MouseButtonPress) { 114 | QMouseEvent *mouseEvent=static_cast(event); 115 | if(mouseEvent->buttons() & Qt::LeftButton) { 116 | do { 117 | //当前结果个数 118 | if(nMBCount > 0 && obj == ui->key_front && (nCurrentPage > 1)) { 119 | changResultPage(--nCurrentPage); break; 120 | } 121 | else if (nMBCount > 0 && obj == ui->key_next && (nCurrentPage < nPagesCount)) { 122 | changResultPage(++nCurrentPage); break; 123 | } 124 | for(int i = 1; i <= MAX_SHOW_ZH_NUM; i++) { 125 | QLabel* tlabel = this->findChild(QString("label_%1").arg(i)); 126 | if(obj == tlabel) {labelIndex = i; break;} 127 | } 128 | } while(0); 129 | } 130 | } 131 | //选中label中的结果 132 | if(labelIndex > 0) { 133 | QLabel* tlabel = this->findChild(QString("label_%1").arg(labelIndex)); 134 | if(!tlabel->text().isEmpty()) { 135 | nMBCount = 0; //清除当前拼音的结果 136 | ui->lineEdit_inputBox->insert(tlabel->text()); 137 | clearPyButtonText(); 138 | clearLabelText(); 139 | ui->key_page->setText(QString("0/0")); 140 | lInputT9Values.clear(); 141 | } 142 | } 143 | } 144 | 145 | //清除拼音按键的text 146 | void SoftKeyBoardDlg::clearPyButtonText() 147 | { 148 | for(int i = 1; i <= MAX_SHOW_PY_NUM; i++) { 149 | this->findChild(QString("pushButton_py%1").arg(i))->setText(""); 150 | } 151 | } 152 | //设置拼音按键的text 153 | void SoftKeyBoardDlg::setPyButtonText(int conut, T9PY_IDX **t9Py) 154 | { 155 | clearPyButtonText(); 156 | for(int i = 0; i < conut; i++) { 157 | this->findChild(QString("pushButton_py%1").arg(i+1))->setText(t9Py[i]->PY); 158 | } 159 | } 160 | //清除结果栏字符 161 | void SoftKeyBoardDlg::clearLabelText() 162 | { 163 | for(int i = 1; i <= MAX_SHOW_ZH_NUM; i++) { 164 | this->findChild(QString("label_%1").arg(i))->setText(""); 165 | } 166 | } 167 | //选择拼音时,更新结果栏显示 168 | 169 | void SoftKeyBoardDlg::updateLabelResult() 170 | { 171 | nMBCount = getLabelResults().length(); 172 | nPagesCount = (nMBCount % MAX_SHOW_ZH_NUM) ? (nMBCount / MAX_SHOW_ZH_NUM + 1) : nMBCount / MAX_SHOW_ZH_NUM; 173 | nCurrentPage = 1; 174 | changResultPage(nCurrentPage); 175 | } 176 | 177 | //选择拼音按钮 178 | void SoftKeyBoardDlg::onPyButtonClicked(int id) 179 | { 180 | if(this->findChild(QString("pushButton_py%1").arg(id))->text().isEmpty()) { 181 | return; 182 | } 183 | setLabelResults(QString::fromUtf8((const char*)mT9PyChinese[id - 1]->MB)); 184 | updateLabelResult(); 185 | } 186 | 187 | /******************** 数字键盘 ********************************/ 188 | void SoftKeyBoardDlg::initDigitKeyControl() 189 | { 190 | mDigitKeyButtonGroup = new QButtonGroup; 191 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_1, 1); 192 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_2, 2); 193 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_3, 3); 194 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_4, 4); 195 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_5, 5); 196 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_6, 6); 197 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_7, 7); 198 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_8, 8); 199 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_9, 9); 200 | mDigitKeyButtonGroup->addButton(ui->pushButton_key_10, 10); 201 | connect(mDigitKeyButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(onDigitKeyButtonClicked(int))); 202 | connect(ui->pushButton_key_back, SIGNAL(clicked()), this, SLOT(onGoBackClicked())); 203 | connect(ui->pushButton_key_null, SIGNAL(clicked()), this, SLOT(onPushButtonNull())); 204 | } 205 | 206 | void SoftKeyBoardDlg::onDigitKeyButtonClicked(int id) 207 | { 208 | QPushButton* tButton = this->findChild(QString("pushButton_key_%1").arg(id)); 209 | ui->lineEdit_inputBox->insert(tButton->text()); 210 | } 211 | 212 | /******************** 符号键盘 ********************************/ 213 | void SoftKeyBoardDlg::initCharKeyControl() 214 | { 215 | mCharKeyButtonGroup = new QButtonGroup; 216 | mCharKeyButtonGroup->addButton(ui->pushButton_char_1, 1); 217 | mCharKeyButtonGroup->addButton(ui->pushButton_char_2, 2); 218 | mCharKeyButtonGroup->addButton(ui->pushButton_char_3, 3); 219 | mCharKeyButtonGroup->addButton(ui->pushButton_char_4, 4); 220 | mCharKeyButtonGroup->addButton(ui->pushButton_char_5, 5); 221 | mCharKeyButtonGroup->addButton(ui->pushButton_char_6, 6); 222 | mCharKeyButtonGroup->addButton(ui->pushButton_char_7, 7); 223 | mCharKeyButtonGroup->addButton(ui->pushButton_char_8, 8); 224 | mCharKeyButtonGroup->addButton(ui->pushButton_char_9, 9); 225 | mCharKeyButtonGroup->addButton(ui->pushButton_char_10, 10); 226 | mCharKeyButtonGroup->addButton(ui->pushButton_char_11, 11); 227 | mCharKeyButtonGroup->addButton(ui->pushButton_char_12, 12); 228 | mCharKeyButtonGroup->addButton(ui->pushButton_char_13, 13); 229 | mCharKeyButtonGroup->addButton(ui->pushButton_char_14, 14); 230 | mCharKeyButtonGroup->addButton(ui->pushButton_char_15, 15); 231 | mCharKeyButtonGroup->addButton(ui->pushButton_char_16, 16); 232 | connect(mCharKeyButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(onCharKeyButtonClicked(int))); 233 | connect(ui->pushButton_char_back, SIGNAL(clicked()), this, SLOT(onGoBackClicked())); 234 | connect(ui->pushButton_char_null, SIGNAL(clicked()), this, SLOT(onPushButtonNull())); 235 | connect(ui->pushButton_char_front, SIGNAL(clicked()), this, SLOT(onPushButtonCharFrontClicked())); 236 | connect(ui->pushButton_char_next, SIGNAL(clicked()), this, SLOT(onPushButtonCharNextClicked())); 237 | } 238 | 239 | void SoftKeyBoardDlg::onPushButtonCharFrontClicked() 240 | { 241 | if(m_pCurrentCharPage > 1) { 242 | this->clearCharButtonText(); 243 | this->setCharButtonText(--m_pCurrentCharPage); 244 | } 245 | } 246 | 247 | void SoftKeyBoardDlg::onPushButtonCharNextClicked() 248 | { 249 | if(m_pCurrentCharPage < 3) { 250 | this->clearCharButtonText(); 251 | this->setCharButtonText(++m_pCurrentCharPage); 252 | } 253 | } 254 | 255 | void SoftKeyBoardDlg::clearCharButtonText() 256 | { 257 | for(int i = 1; i <= MAX_CHAR_BUTTON_CNT; i++) { 258 | this->findChild(QString("pushButton_char_%1").arg(i))->setText(""); 259 | } 260 | } 261 | 262 | void SoftKeyBoardDlg::setCharButtonText(int page) 263 | { 264 | int showCount = (enChars.length() - MAX_CHAR_BUTTON_CNT * (page - 1)) > MAX_CHAR_BUTTON_CNT 265 | ? MAX_CHAR_BUTTON_CNT : enChars.length() - MAX_CHAR_BUTTON_CNT * (page - 1); 266 | 267 | int startArray = (page - 1) * MAX_CHAR_BUTTON_CNT; 268 | for(int i = 1; i <= showCount; i++) { 269 | if(enChars.at(startArray + i - 1) == '&') { 270 | this->findChild(QString("pushButton_char_%1").arg(i))->setText("&&"); 271 | } 272 | else { 273 | this->findChild(QString("pushButton_char_%1").arg(i))->setText( 274 | enChars.at(startArray + i - 1)); 275 | } 276 | } 277 | } 278 | 279 | void SoftKeyBoardDlg::onCharKeyButtonClicked(int id) 280 | { 281 | QString text = this->findChild(QString("pushButton_char_%1").arg(id))->text(); 282 | if(!text.isEmpty()) { 283 | if(text == "&&") { 284 | ui->lineEdit_inputBox->insert("&"); 285 | } 286 | else { 287 | ui->lineEdit_inputBox->insert(text); 288 | } 289 | } 290 | } 291 | 292 | /***********************************************************************/ 293 | void SoftKeyBoardDlg::release() 294 | { 295 | if(lInputT9Values.size() > 0) { 296 | lInputT9Values.clear(); 297 | } 298 | setLabelResults(""); 299 | ui->key_page->setText(QString("0/0")); 300 | clearLabelText(); 301 | clearPyButtonText(); 302 | } 303 | 304 | 305 | //更新拼音字库 306 | void SoftKeyBoardDlg::updatePyAndZh() 307 | { 308 | QString pymbStr; 309 | for(int i = 0; i < lInputT9Values.size(); i++) { 310 | pymbStr += lInputT9Values[i]; 311 | } 312 | nResultCounts = getMatchedPymb((unsigned char*)pymbStr.toStdString().c_str(), mT9PyChinese); 313 | if(nResultCounts > 0 && nResultCounts <= MAX_SHOW_PY_NUM) { 314 | setPyButtonText(nResultCounts, mT9PyChinese); 315 | onPyButtonClicked(1); 316 | } 317 | else { 318 | lInputT9Values.pop_back(); 319 | } 320 | } 321 | 322 | //点击按键 323 | void SoftKeyBoardDlg::onKeyButtonClicked(int id) 324 | { 325 | if(id >= 2 && id <= 9) { 326 | if(ui->pushButton_change->text() == enLanguage) { 327 | char str[8]; 328 | if(getMatchedPyEn(id, str)) { 329 | setLabelResults(QString::fromUtf8(str)); 330 | updateLabelResult(); 331 | } 332 | 333 | } 334 | else { 335 | if(lInputT9Values.size() < MAX_PY_LENGTH) { 336 | lInputT9Values.push_back(QString::number(id)); 337 | updatePyAndZh(); 338 | } 339 | } 340 | } 341 | } 342 | 343 | 344 | //手动返回close 345 | void SoftKeyBoardDlg::onKeyCloseClicked() 346 | { 347 | *softKeyValue = ""; 348 | ui->lineEdit_inputBox->clear(); 349 | release(); 350 | this->close(); 351 | //这里添加一个手动关闭信号, 为了让父窗口重新启动自动关闭 352 | emit closeDialogManual(); 353 | } 354 | 355 | /**需要s启动父窗口的自动关闭定时器**/ 356 | //点击确定 357 | void SoftKeyBoardDlg::onOkClicked() 358 | { 359 | release(); 360 | *softKeyValue = ui->lineEdit_inputBox->text(); 361 | ui->lineEdit_inputBox->clear(); 362 | this->close(); 363 | } 364 | 365 | //点击回退 366 | void SoftKeyBoardDlg::onKeyBaskspaceClicked() 367 | { 368 | if(lInputT9Values.size() > 0) { 369 | lInputT9Values.pop_back(); 370 | if(lInputT9Values.size() == 0) { 371 | clearPyButtonText(); 372 | clearLabelText(); 373 | ui->key_page->setText(QString("0/0")); 374 | } 375 | else { 376 | updatePyAndZh(); 377 | } 378 | } 379 | else if(ui->lineEdit_inputBox->text().size() > 0) { 380 | ui->lineEdit_inputBox->backspace(); 381 | ui->lineEdit_inputBox->setEnabled(true); 382 | ui->lineEdit_inputBox->setFocus(); 383 | } 384 | } 385 | 386 | //中英切换 387 | void SoftKeyBoardDlg::onPushButtonFontChang() 388 | { 389 | if(bIsEnglishMode) { 390 | return; 391 | } 392 | release(); 393 | if(ui->pushButton_change->text() == zhLanguage) { 394 | ui->pushButton_change->setText(enLanguage); 395 | } 396 | else { 397 | ui->pushButton_change->setText(zhLanguage); 398 | } 399 | } 400 | 401 | //空格 402 | void SoftKeyBoardDlg::onPushButtonNull() 403 | { 404 | ui->lineEdit_inputBox->insert(" "); 405 | ui->lineEdit_inputBox->setEnabled(true); 406 | ui->lineEdit_inputBox->setFocus(); 407 | } 408 | 409 | void SoftKeyBoardDlg::onGoBackClicked() 410 | { 411 | ui->stackedWidget->setCurrentWidget(ui->page_spell); 412 | release(); 413 | } 414 | 415 | void SoftKeyBoardDlg::setSoftKeyBoardLanguage() 416 | { 417 | // if(SystemSetting::Language == SYSTEM_LANGUAGE_EN) { 418 | // bIsEnglishMode = true; 419 | // ui->pushButton_change->setText(enLanguage); 420 | // } 421 | // else { 422 | // bIsEnglishMode = false; 423 | // ui->pushButton_change->setText(zhLanguage); 424 | // } 425 | } 426 | 427 | void SoftKeyBoardDlg::on_pushButton_char_clicked() 428 | { 429 | ui->stackedWidget->setCurrentWidget(ui->page_chars); 430 | } 431 | 432 | void SoftKeyBoardDlg::on_pushButton_digit_clicked() 433 | { 434 | ui->stackedWidget->setCurrentWidget(ui->page_digit); 435 | } 436 | 437 | 438 | int SoftKeyBoardDlg::startExec(QString *value) 439 | { 440 | softKeyValue = value; 441 | //setSoftKeyBoardLanguage(); 442 | ui->stackedWidget->setCurrentWidget(ui->page_spell); 443 | return this->exec(); 444 | } 445 | 446 | 447 | -------------------------------------------------------------------------------- /softkeyboarddlg.h: -------------------------------------------------------------------------------- 1 | #ifndef SOFTKEYBOARDDLG_H 2 | #define SOFTKEYBOARDDLG_H 3 | 4 | #include "fontlib_zh.h" 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | namespace Ui { 12 | class SoftKeyBoardDlg; 13 | } 14 | 15 | class SoftKeyBoardDlg : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit SoftKeyBoardDlg(QWidget *parent = 0); 21 | ~SoftKeyBoardDlg(); 22 | int startExec(QString* value = 0); 23 | 24 | private: 25 | Ui::SoftKeyBoardDlg *ui; 26 | 27 | QList lInputT9Values; 28 | T9PY_IDX* mT9PyChinese[6]; 29 | QButtonGroup* mKeyButtonGroup; 30 | QButtonGroup* mPyButtonGroup; 31 | QButtonGroup* mDigitKeyButtonGroup; 32 | QButtonGroup* mCharKeyButtonGroup; 33 | 34 | static QString sCurrentResult; 35 | int nResultCounts = 0; 36 | int nCurrentPyIndex = 0; 37 | 38 | int nCurrentPage = 0; 39 | int nPagesCount = 0; 40 | int nMBCount = 0; 41 | 42 | QString* softKeyValue; 43 | bool bIsEnglishMode = false; 44 | 45 | int m_pCurrentCharPage = 1; 46 | private: 47 | 48 | void initSpellKeyControl(); 49 | void initDigitKeyControl(); 50 | void initCharKeyControl(); 51 | 52 | void clearPyButtonText(); 53 | void clearLabelText(); 54 | void setPyButtonText(int conut, T9PY_IDX **t9Py); 55 | void changResultPage(int page); 56 | void updateLabelResult(); 57 | void release(); 58 | 59 | static void setLabelResults(QString result) { sCurrentResult = result;} 60 | static QString getLabelResults() { return sCurrentResult;} 61 | void updatePyAndZh(); 62 | 63 | void setSoftKeyBoardLanguage(); 64 | 65 | void clearCharButtonText(); 66 | void setCharButtonText(int page); 67 | 68 | signals: 69 | void closeDialogManual(); 70 | private slots: 71 | void onKeyCloseClicked(); 72 | void onKeyBaskspaceClicked(); 73 | void onPushButtonNull(); 74 | void onGoBackClicked(); 75 | void onOkClicked(); 76 | 77 | 78 | /** Spell Mode **/ 79 | void onKeyButtonClicked(int id); 80 | void onPyButtonClicked(int id); 81 | void onPushButtonFontChang(); 82 | /** Digit Mode **/ 83 | void onDigitKeyButtonClicked(int id); 84 | /** Char Mode **/ 85 | void onCharKeyButtonClicked(int id); 86 | 87 | void onPushButtonCharFrontClicked(); 88 | void onPushButtonCharNextClicked(); 89 | 90 | void on_pushButton_char_clicked(); 91 | void on_pushButton_digit_clicked(); 92 | 93 | protected: 94 | bool eventFilter(QObject *obj, QEvent *event); 95 | 96 | }; 97 | 98 | #endif // SOFTKEYBOARDDLG_H 99 | -------------------------------------------------------------------------------- /softkeyboarddlg.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | SoftKeyBoardDlg 4 | 5 | 6 | Qt::NonModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 365 13 | 419 14 | 15 | 16 | 17 | Dialog 18 | 19 | 20 | 21 | 2 22 | 23 | 24 | 5 25 | 26 | 27 | 5 28 | 29 | 30 | 5 31 | 32 | 33 | 2 34 | 35 | 36 | 37 | 38 | 39 | 0 40 | 41 | 42 | 0 43 | 44 | 45 | 0 46 | 47 | 48 | 9 49 | 50 | 51 | 0 52 | 53 | 54 | 55 | 56 | 57 | 0 58 | 0 59 | 60 | 61 | 62 | <- 63 | 64 | 65 | 66 | 67 | 68 | 69 | Qt::Horizontal 70 | 71 | 72 | 73 | 40 74 | 20 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 0 84 | 0 85 | 86 | 87 | 88 | ok 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | Qt::Horizontal 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 16777215 107 | 40 108 | 109 | 110 | 111 | 112 | 2 113 | 114 | 115 | 0 116 | 117 | 118 | 0 119 | 120 | 121 | 0 122 | 123 | 124 | 0 125 | 126 | 127 | 128 | 129 | 130 | 0 131 | 0 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 0 141 | 0 142 | 143 | 144 | 145 | 146 | 50 147 | 31 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | :/style/xiaochu.png:/style/xiaochu.png 156 | 157 | 158 | 159 | 35 160 | 28 161 | 162 | 163 | 164 | false 165 | 166 | 167 | true 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | Qt::Horizontal 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 1 187 | 188 | 189 | 0 190 | 191 | 192 | 0 193 | 194 | 195 | 0 196 | 197 | 198 | 0 199 | 200 | 201 | 202 | 203 | 0 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | Qt::AlignCenter 212 | 213 | 214 | 215 | 216 | 217 | 218 | Qt::Vertical 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | Qt::AlignCenter 229 | 230 | 231 | 232 | 233 | 234 | 235 | Qt::Vertical 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 0 244 | 32 245 | 246 | 247 | 248 | 249 | 250 | 251 | Qt::AlignCenter 252 | 253 | 254 | 255 | 256 | 257 | 258 | Qt::Vertical 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | Qt::AlignCenter 269 | 270 | 271 | 272 | 273 | 274 | 275 | Qt::Vertical 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | Qt::AlignCenter 286 | 287 | 288 | 289 | 290 | 291 | 292 | Qt::Vertical 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | Qt::AlignCenter 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | Qt::Horizontal 312 | 313 | 314 | 315 | 316 | 317 | 318 | 1 319 | 320 | 321 | 1 322 | 323 | 324 | 1 325 | 326 | 327 | 328 | 329 | 1 330 | 331 | 332 | 333 | 334 | 335 | 0 336 | 0 337 | 338 | 339 | 340 | 341 | 50 342 | 0 343 | 344 | 345 | 346 | 347 | 50 348 | 16777215 349 | 350 | 351 | 352 | 353 | 354 | 355 | false 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 0 364 | 0 365 | 366 | 367 | 368 | 369 | 50 370 | 16777215 371 | 372 | 373 | 374 | 375 | 376 | 377 | false 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 0 386 | 0 387 | 388 | 389 | 390 | 391 | 50 392 | 16777215 393 | 394 | 395 | 396 | 397 | 398 | 399 | false 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 0 408 | 0 409 | 410 | 411 | 412 | 413 | 50 414 | 16777215 415 | 416 | 417 | 418 | 419 | 420 | 421 | false 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 0 430 | 0 431 | 432 | 433 | 434 | 435 | 50 436 | 16777215 437 | 438 | 439 | 440 | 441 | 442 | 443 | false 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 0 452 | 0 453 | 454 | 455 | 456 | 457 | 50 458 | 16777215 459 | 460 | 461 | 462 | 463 | 464 | 465 | false 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | QLayout::SetMaximumSize 475 | 476 | 477 | 1 478 | 479 | 480 | 481 | 482 | 483 | 0 484 | 0 485 | 486 | 487 | 488 | GHI 489 | 490 | 491 | false 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 0 500 | 0 501 | 502 | 503 | 504 | MNO 505 | 506 | 507 | false 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 0 516 | 0 517 | 518 | 519 | 520 | DEF 521 | 522 | 523 | false 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 0 532 | 0 533 | 534 | 535 | 536 | PQRS 537 | 538 | 539 | false 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 0 548 | 0 549 | 550 | 551 | 552 | WXYZ 553 | 554 | 555 | false 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 0 564 | 0 565 | 566 | 567 | 568 | 1 569 | 570 | 571 | false 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 0 580 | 0 581 | 582 | 583 | 584 | TUV 585 | 586 | 587 | false 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 0 596 | 0 597 | 598 | 599 | 600 | JKL 601 | 602 | 603 | false 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 0 612 | 0 613 | 614 | 615 | 616 | < 617 | 618 | 619 | false 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 0 628 | 0 629 | 630 | 631 | 632 | ABC 633 | 634 | 635 | false 636 | 637 | 638 | 639 | 640 | 641 | 642 | true 643 | 644 | 645 | 646 | 0 647 | 0 648 | 649 | 650 | 651 | 0/0 652 | 653 | 654 | false 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 0 663 | 0 664 | 665 | 666 | 667 | > 668 | 669 | 670 | false 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 0 683 | 40 684 | 685 | 686 | 687 | 688 | 16777215 689 | 40 690 | 691 | 692 | 693 | 694 | 1 695 | 696 | 697 | 1 698 | 699 | 700 | 0 701 | 702 | 703 | 1 704 | 705 | 706 | 0 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 0 715 | 0 716 | 717 | 718 | 719 | 720 | 50 721 | 16777215 722 | 723 | 724 | 725 | 726 | 727 | 728 | false 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 0 737 | 0 738 | 739 | 740 | 741 | 742 | 50 743 | 16777215 744 | 745 | 746 | 747 | 123 748 | 749 | 750 | false 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 0 759 | 0 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | Ctrl+S, Ctrl+S, Ctrl+S 770 | 771 | 772 | false 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 0 781 | 0 782 | 783 | 784 | 785 | 786 | 50 787 | 16777215 788 | 789 | 790 | 791 | 792 | 793 | 794 | false 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 0 812 | 0 813 | 814 | 815 | 816 | 1 817 | 818 | 819 | false 820 | 821 | 822 | false 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 0 831 | 0 832 | 833 | 834 | 835 | 2 836 | 837 | 838 | false 839 | 840 | 841 | false 842 | 843 | 844 | false 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 0 853 | 0 854 | 855 | 856 | 857 | 3 858 | 859 | 860 | false 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 0 869 | 0 870 | 871 | 872 | 873 | 4 874 | 875 | 876 | false 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 0 885 | 0 886 | 887 | 888 | 889 | 5 890 | 891 | 892 | false 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 0 901 | 0 902 | 903 | 904 | 905 | 6 906 | 907 | 908 | false 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 0 917 | 0 918 | 919 | 920 | 921 | 7 922 | 923 | 924 | false 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 0 933 | 0 934 | 935 | 936 | 937 | 8 938 | 939 | 940 | false 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 0 949 | 0 950 | 951 | 952 | 953 | 9 954 | 955 | 956 | false 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 0 965 | 0 966 | 967 | 968 | 969 | 返回 970 | 971 | 972 | false 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 0 981 | 0 982 | 983 | 984 | 985 | 0 986 | 987 | 988 | false 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 0 997 | 0 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | false 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1 1016 | 1017 | 1018 | 1 1019 | 1020 | 1021 | 5 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 0 1028 | 0 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | false 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 0 1044 | 0 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | false 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 0 1060 | 0 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | false 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 0 1076 | 0 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | false 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 0 1092 | 0 1093 | 1094 | 1095 | 1096 | & 1097 | 1098 | 1099 | false 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 0 1108 | 0 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | false 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 0 1124 | 0 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | false 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 0 1140 | 0 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | false 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 0 1156 | 0 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | false 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 0 1172 | 0 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | false 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 0 1188 | 0 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | false 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 0 1204 | 0 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | false 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 0 1220 | 0 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | false 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 0 1236 | 0 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | false 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 0 1252 | 0 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | false 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 0 1268 | 0 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | false 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 2 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 0 1291 | 0 1292 | 1293 | 1294 | 1295 | 1296 | 50 1297 | 40 1298 | 1299 | 1300 | 1301 | 返回 1302 | 1303 | 1304 | false 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 0 1313 | 0 1314 | 1315 | 1316 | 1317 | 1318 | 50 1319 | 40 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | :/style/jiantou-zuo.png:/style/jiantou-zuo.png 1331 | 1332 | 1333 | false 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 0 1342 | 0 1343 | 1344 | 1345 | 1346 | 1347 | 16777215 1348 | 40 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | false 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 0 1364 | 0 1365 | 1366 | 1367 | 1368 | 1369 | 50 1370 | 40 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | :/style/jiantou-you-.png:/style/jiantou-you-.png 1382 | 1383 | 1384 | false 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | line_7 1396 | widget 1397 | stackedWidget 1398 | widget_2 1399 | line_9 1400 | 1401 | 1402 | 1403 | 1404 | --------------------------------------------------------------------------------