±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚjianshu£¬±¾ÎÄÖ÷Òª½éÉÜÁËQt¾ßÓÐÄÄЩÓÅÊÆ£¬QtÌṩµÄÐźźͲۻúÖÆ£¬ÐźÅÓë²ÛµÄÁ¬½Ó·½Ê½¡¢ÓŵãµÈÏà¹ØÖªÊ¶¡£ |
|
Qt½éÉÜ
QtÊÇÒ»¸ö¿çƽ̨µÄC++ͼÐÎÓû§½çÃæÓ¦ÓóÌÐò¿ò¼Ü¡£ËüÔçÔÚ1991ÄêÆæÈ¤¿Æ¼¼¹«Ë¾Á½Î»ºÏ»ïÈË×ÅÊÖ¿ª·¢ÕâÑùÒ»¸öƽ̨£¬ÔÚ2008ÄêÈçÈÕÖÐÌìµÄŵ»ùÑÇÓÉÓÚ¿´ºÃQtÔÚǶÈëʽÁìÓòµÄDZÁ¦£¬Ò»ÖÀǧ½ð½«ËüÊÕ¹º×÷ΪÐÂÒ»´úÖÇÄÜÊÖ»ú²Ù×÷ϵͳµÄÔØÌ壬µ«ÊÇÒòΪŵ»ùÑÇÔÚÖÇÄÜÊÖ»úÁìÓòµÄ°Ü±±£¬²»µÃÒѶø·ÅÊÖQt£¬ÖÕÓÚQtÓÚ2012±»×îºóһλ¶«¼Ò
Digia ¹«Ë¾ÊÕ¹º¡£¾¹ýÕ⼸ÄêµÄ·¢Õ¹£¬Qt²»µ«ÓµÓÐÁËÍ걸µÄC++ͼÐο⣬¶øÇÒÒ²¼«´óµÄÌá¸ßÁËQt¿ª·¢¿çƽ̨ӦÓóÌÐòµÄÄÜÁ¦¡£
Qt¿ÉÒÔͬʱ֧³Ö×ÀÃæÓ¦ÓóÌÐò¿ª·¢¡¢Ç¶Èëʽ¿ª·¢ºÍÒÆ¶¯¿ª·¢£¬ÉõÖÁËü¿ÉÒÔ×öÒÆ¶¯¿ª·¢£¬¸²¸ÇÁËÏÖÓеÄËùÓÐÖ÷Á÷ƽ̨¡£ÄãÖ»ÐèÒª±àдһ´Î´úÂ룬·¢²¼µ½²»Í¬Æ½Ì¨Ç°ÖØÐ±àÒë¼´¿É¡£
ÄÄЩ²úÆ·¶¼ÊÇÓÃQt¿ª·¢µÄ£¿
Qtƾ½èÒ»Ì×¶ÔÔÉúWindows¡¢Mac¡¢LinuxµÈƽ̨֧³ÖºÜºÃµÄ GUI ¿âºÍ·á¸»µÄ API ¿â£¬Ê¹µÃËü³ÉΪÁË¿ª·¢¿çƽ̨×ÀÃæÓ¦ÓõÄÒ»¸öºÜºÃµÄÑ¡Ôñ¡£ÓëÖйúһЩÓÅÐãµÄ×ÀÃæ¶ËÈí¼þÑ¡Ôñ×Ô¼º¿ª·¢¶àƽ̨µÄ
GUI ¿â²»Í¬£¬¹úÍâµÄºÜ¶àÓÅÐã×ÀÃæÓ¦Óö¼Æ«ºÃ²ÉÓÃ¿çÆ½Ì¨µÄ GUI ¿â½øÐпª·¢¡£±ÈÈçÔÚ¹è¹ÈÓÐÒ»¿îºÜÖøÃûµÄÎĵµ¹ÜÀíÓ¦ÓÃ
DropBox£¬Î¢Èí×Ô¼ÒµÄÉç½»ÁÄÌ칤¾ß Skype£¬Ïñ¼«Æ··É³µÕâÑù´óÐ͵ÄÓÎÏ·µÄGUIÒ³Ãæ£¬ÉõÖÁ¹úÄڵĽðɽÈí¼þ¹«Ë¾ÍƳöµÄ°ì¹«Èí¼þ
WPS Office£¬µ±È»»¹ÓÐÎÒÃǵÄAlphaBox¡£
ΪʲôAlphaBoxÑ¡ÔñQt£¿
ÒòΪQt²»½öÄܹ»¸ßЧÂʵÄÍê³É²»Í¬Æ½Ì¨GUIÄÚÈݵĿª·¢£¬¸üÄܹ»¸ßЧÂʵÄÍê³Éϵͳ¼¶±ðµÄһЩÈÎÎñ¡£ÕâÒ²ÊÇAlphaBoxÑ¡ÔñʹÓÃQt¿ª·¢µÄÔÒò¡£
AlphaBox Æäʵ°üº¬Á½¸öÖ÷ÒªµÄ½ø³Ì£¬Ò»¿éÊÇͬ²½Å̵ÄÒýÇæ¡ªCÓïÑÔ¹¹½¨µÄµ×²ãͬ²½½ø³Ì£¬ÎÒÃdzÆÖ®Îª
daemon£»Ê£ÏµÄͼÐÎÒ³ÃæÒÔ¼°Óë²Ù×÷ϵͳ½»»¥µÄÄ£¿é¶¼ÊÇʹÓÃQt½øÐпª·¢µÄ¡£QtÌṩµÄ·á¸»µÄ¿çƽ̨GUI×é¼þÄܹ»±£Ö¤ÔÚ²»Í¬²Ù×÷ϵͳÖÐ
AlphaBox ¶¼ÓÐ×ÅÃÀ¹ÛºÍÎǺϲÙ×÷ϵͳµÄÑùʽ£¬Qt×Ô¼ÒÉú²úµÄ IDE¡ªQt Creator ÌṩÁËÒ»Ì׷dz£ºÃÉÏÊÖµÄͼÐνçÃæ¹¹½¨¹¤¾ß£¬¼´Ê¹ÊǸսӴ¥QtµÄС°×Ò²¿ÉÒÔÇáËɵĻæÖƳöÏëÒªµÄÒ³Ãæ²¢ÇÒÄܹ»Íê³ÉºËÐÄÒ³ÃæÂß¼¡£³ý´ËÖ®Í⣬µÃÒæÓÚ
C++ µÄ¼Ó³Ö£¬QtÓë²Ù×÷ϵͳÓÐ×ŷdz£½¡×³µÄͨÐÅ»úÖÆ£¬Æ¾½èÕâÒ»µã£¬AlphaBox Äܹ»ÇáËÉÍê³É¾«×¼¼à¿Ø²Ù×÷ϵͳÖÐÎļþµÄ¸Ä¶¯¡¢½¨Á¢±¾µØÊý¾Ý¿â½øÐÐдÈëÊý¾ÝµÄµÈ²Ù×÷£¬²»½öÓÚ´Ë£¬ÓÅÐãµÄ»ìºÏ±à³ÌÄÜÁ¦Äܹ»ÈÃQtÇáËɵÄÓë
Objective-C¡¢C# µÈÓïÑÔ½øÐлì±à£¬ÊµÏÖϵͳ¼¶±ðÀ©Õ¹µÄµ÷Óã¬Õâ¾ÍÊÇÎÒÃÇÄܹ»ÔÚ Finder
ºÍWindows ×ÊÔ´¹ÜÀíÆ÷ÖÐÄܹ»¿´µ½Í¬²½ÅÌÎļþ²»Í¬×´Ì¬µÄÔÒòÁË¡£
QtÓÅÊÆ
ÓÅÁ¼µÄ¿çÆ½Ì¨ÌØÐÔ
QtÖ§³Ö Windows¡¢Linux/Unix¡¢Mac OS X¡¢Android¡¢BlackBerry¡¢QNXµÈ¶àÖÖÆ½Ì¨£¬²¢ÎªÕâЩ²»Í¬µÄƽ̨ÌṩÁËͳһµÄ¿ª·¢»·¾³¡£
ÃæÏò¶ÔÏó
C++ÊÇÍêÈ«ÃæÏò¶ÔÏóµÄ£¬ÕâÒ»µãºÍObjective-cµÈÔÚ¿ª·¢ºÜÏàËÆ¡£¶øQtÓÖÊÇ»ùÓÚC++Ò»ÖÖÓïÑÔµÄÀ©Õ¹£¬´ó¼Ò¶¼ÖªµÀC++
ÓпìËÙ¡¢¼òÒס¢ÃæÏò¶ÔÏóµÈºÜ¶àÓŵ㣬ËùÒÔQt×ÔȻҲ¼Ì³ÐÕßC++ÕâЩµÄÓŵ㡣
QtÁ¼ºÃµÄ·â×°»úÖÆÊ¹µÃQtµÄÄ£¿é»¯³Ì¶È·Ç³£¸ß£¬¿ÉÖØÓÃÐԽϺ㬶ÔÓû§¿ª·¢À´»õÊǷdz£·½±ãµÄ¡£QtÌṩһÖÖΪsignals/slots(ÐźźͲÛ)
µÄ°²È«ÀàÐÍÀ´Ìæ´úcallback£¬Ê¹µÃ¸÷¸öÔª¼þÖ®¼äµÄÐͬ¹¤×÷±äµÃÊ®·Ö¼òµ¥¡£
·á¸»µÄAPI
Qt°üÀ¨¶à´ï 250 ¸öÒÔÉ쵀 C++ À࣬»¹Ìṩ»ùÓÚÄ£°åµÄ collections£¬ serialization£¬
file£¬ I/Odevice£¬ directory management£¬ date/time Àà¡£ÉõÖÁ»¹°üÀ¨ÕýÔò±í´ïʽµÄ´¦Àí¹¦ÄÜ¡£
Ö§³Ö 2D/3D ͼÐÎäÖȾ£¬Ö§³Ö OpenGL¡£
´óÁ¿µÄ¿ª·¢Îĵµ¡£
XMLÖ§³Ö
Webkit ÒýÇæµÄ¼¯³É£¬¿ÉÒÔʵÏÖ±¾µØ½çÃæÓëWebÄÚÈݵÄÎ޷켯³É£¬
µ«ÊÇÕæÕýʹµÃ Qt ÔÚ×ÔÓÉÈí¼þ½çµÄÖÚ¶à Widgets (Èç Lesstif£¬Gtk£¬EZWGL£¬Xforms£¬fltk
µÈµÈ)ÖÐÍÑÓ±¶ø³öµÄ»¹ÊÇ»ùÓÚ Qt µÄÖØÁ¿¼¶Èí¼þ KDE¡£
ÐźźͲۻúÖÆ
QtÌṩÁËÐźźͲۻúÖÆÓÃÓÚÍê³É¼ûÃæ²Ù×÷µÄÏìÓ¦£¬ÊÇÍê³ÉÈÎÒâÁ½¸öQt¶ÔÏó֮ͨÐÅ»úÖÆ¡£ÆäÖУ¬ÐźŻáÔÚij¸öÌØ¶¨Çé¿ö»ò¶¯×÷ϱ»´¥¶¯£¬²ÛÊǵÈͬÓÚ½ÓÊܲ¢´¦ÀíÐźŵĺ¯Êý¡£
Ϊʲô·½·¨²»ÊÇÖ±½Óµ÷Óõġ£ÖмäÓõ½ Signal ºÍ²Û»úÖÆ²»ÊǶà´ËÒ»¾Ù£¿
ÆäʵÔÚÎÒÃÇÉú»îÒ²ÊÇÒ»Ñù£¬Àϰ弶±ðµÄºÃ˵»°£¬ÀÏ°å¸øÖúÀí·ÖÅÉÈÎÎñÒ²ºÃ˵»°£¬µ«ÊÇÖúÀí¸øÀϰå·ÖÈÎÎñ£¬¿ÉÏë¶øÖª»áÓÐʲôºó¹û£¬ÔÚÒÔǰµÄͳÖνײã¿Ï¶¨²»ÔÊÐíÕâÑùµÄÊ·¢Éú¡£ËùÒÔÔÚ·Ö²ã˼ÏëÖУ¬ÎÒÃÇËùµ÷Óõĺ¯ÊýÒ²ÊÇÕâÑùµÄ£¬Éϲã¿ÉÒÔµ÷ÓÃϲãºÍͬһ²ãµÄº¯Êý£¬Ï²㺯Êý²»¿ÉÒÔµ÷ÓÃÉϲ㺯Êý£¬·ñÔò³ÌÐòµÄ²ã´ÎÐԻᱻ´òÆÆ£¬µ¼Ö½ṹ´í×Û¸´ÔÓ£¬ÄÑÒÔά»¤ºÍ¹ÜÀí¡£
ÄÇôÔõÑù²ÅÄÜ×öµ½ÏòÉϹÜÀíÄØ£¬ÓÐÈÎÎñ·ÖÅ䏸ÀϰåÔõô°ì£¿
Àϰå»áÉèÁ¢Ò»¸ö»ú¹¹£¬Ò²¾ÍÊÇÒ»¸öº¯Êý£¬ÓÃÎÞÏÞÑ»·À´²éѯÖúÀíµÄ״̬£¬Èç¹ûÖúÀíÕæµÄÓÐÊÂÇ飬Õâ¸ö»ú¹¹¾Í°ÑÕâÏûÏ¢Äõ½ÀϰåÀ´´¦Àí¡£µ«ÊÇÕâÖÖ´¦Àí·½Ê½ÏÔµÃÓÐЩ¸´ÔÓ£¬ÎÒÃÇÏëÒªµÄ¼òµ¥Ã÷Á˵ķ½Ê½ÊÇ£¬Èç¹ûÖúÀíÓÐʼþ·¢Éú£¬¿ÉÒÔÖ±½Óµ÷ÓÃÀϰ庯Êý´¦Àí¡£
˵ÁËÕâô¶àÆäʵ¾ÍÊÇÏë˵£¬ÐźźͲ۵Ä×î´óÓÅÊÆÔÚÓÚ£¬ËüÍêÉÆÁ˳ÌÐò·Ö²ãµÄ˼Ï룬¿ÉÒÔÔÚ²»¸Ä±ä³ÌÐòµÄ²ã´ÎÐÔµÄÇé¿öÏ£¬Íê³ÉÓÉϲ㵽ÉϲãµÄµ÷Óá£ÔÚϲ㷢³öÒ»¸ö
Signal£¬ÕâʱÉϲãÓëÆäÏë¹ØÁªµÄ Slot º¯Êý¾Í»áÏìÓ¦¡£
ÏÖÔÚ£¬ÐźźͲÛÖдæÔÚµÄÎÊÌâÊÇ£º
·¢ËÍÐźŵĶÔÏóÖ»¸ºÔð·¢ËÍ£¬µ«Ëü²¢²»ÖªµÀÓÉËÀ´½ÓÊÕÐźţ»
½ÓÊÕ¶ÔÏóÖеIJ۱¾ÉíÖ»ÊÇÒ»¸öÆÕͨµÄ³ÉÔ±º¯Êý£¬Ëü²¢²»ÖªµÀÏìÓ¦ÄĸöÐźţ»
ÒªÏë½â¾öÒÔÉÏÎÊÌ⣬¾ÍÐèÒª½«ÏàÓ¦µÄÐźźͲÛÁ¬½ÓÆðÀ´¡£µ±Ö¸¶¨µÄÐźŷ¢³öʱ£¬²ÛËùÔڵĶÔÏó¾ÍÄܽÓÊÕµ½¸ÃÐźţ¬´Ó¶øµ÷ÓÃÏàÓ¦µÄ²Ûº¯ÊýÖ´ÐÐÖ¸¶¨µÄ´¦Àí¡£
ÐźÅÓë²ÛµÄÁ¬½Ó·½Ê½
1.Ò»¸öÐźſÉÒÔÓëÁíÒ»¸öÐźÅÏàÁ¬
connect (Object1,SIGNAL(signal1),Object2,SIGNAL(signal2)); |
±íʾ Object1µÄÐźÅ1·¢ËÍ¿ÉÒÔ´¥·¢Object2µÄÐźÅ1·¢ËÍ¡£
2.ͬһ¸öÐźſÉÒÔÓë¶à¸ö²ÛÏàÁ¬£º
connect (Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect (Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));
|
3.ͬһ¸ö²Û¿ÉÒÔÏìÓ¦¶à¸öÐźţº
connect (Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect (Object3,SIGNAL(signal2),Object2,SIGNAL(slot2));
|
4.Á¬½Ó¿ÉÒÔ±»ÒƳý£º
ÕâÖÖÇé¿öÓõñȽÏÉÙ£¬ÒòΪÔÚ¶ÔÏó±»É¾³ýʱ£¬Qt»á×Ô¶¯ÒƳýÓëÕâ¸ö¶ÔÏóÏà¹ØµÄËùÓÐÁ¬½Ó¡£
disconnect(sender,
SIGNAL(signal), receiver, SLOT(slot)); |
µ«ÊÇ£¬³£ÓõÄÁ¬½Ó·½Ê½Îª£º
connect (Object1,SIGNAL(signal),Object2,SIGNAL(slot)); |
ÆäÖУ¬signal Ϊ¶ÔÏóObject1µÄÐźţ¬slot ΪObject2µÄ²Û¡£
Ìáʾ£º
ÐźÅÓë²Û»úÖÆÓëÆÕͨº¯ÊýµÄµ÷ÓÃÒ»Ñù£¬Èç¹ûʹÓò»µ±µÄ»°£¬ÔÚ³ÌÐòÖ´ÐÐʱҲÓпÉÄܲúÉúËÀÑ»·¡£Òò´Ë£¬ÔÚ¶¨Òå²Ûº¯Êýʱһ¶¨Òª×¢Òâ±ÜÃâ¼ä½ÓÐγÉÎÞÏÞÑ»·£¬¼´ÔÚ²ÛÖÐÔٴη¢ÉäËù½ÓÊÕµ½µÄͬÑùÐźš£
Èç¹ûÒ»¸öÐźÅÓë¶à¸ö²ÛÏàÁªÏµµÄ»°£¬ÄÇô£¬µ±Õâ¸öÐźű»·¢Éäʱ£¬ÓëÖ®Ïà¹ØµÄ²Û±»¼¤»îµÄ˳Ðò½«ÊÇËæ»úµÄ¡£
ºê¶¨Òå²»ÄÜÓÃÔÚ signal ºÍ slot µÄ²ÎÊýÖС£
ÐźźͲ۵IJÎÊý¸öÊýÓëÀàÐͱØÐëÒ»Ö¡£
ÐźźͲۻúÖÆÓŵã
ÀàÐͰ²È«
ÐèÒª¹ØÁªµÄÐźźͲ۵ÄÇ©Ãû±ØÐëÊǵÈͬ¡£¼´ÐźŵIJÎÊýÀàÐͺͲÎÊý¸öÊý ͬ½ÓÊÕ¸ÃÐźŵIJ۵IJÎÊýÀàÐͺͲÎÊý¸öÊýÏàͬ¡£²»¹ýÒ»¸ö²ÛµÄ²ÎÊý¸öÊýÊÇ¿ÉÒÔÉÙÓÚÐźŵIJÎÊýµÄ¸öÊýµÄ£¬µ«ÊÇȱÉٵIJÎÊý±ØÐëÊÇÐźŲÎÊýµÄ×îºóÒ»¸ö»òÕß¼¸¸ö²ÎÊý¡£Èç¹ûÐźźͲ۵ÄÇ©Ãû²»·û£¬±àÒëÆ÷¾Í»á±¨´í¡£
ËÉÉ¢ñîºÏ
ÐźźͲۻúÖÆ´ó´ó½µµÍÁËQt¶ÔÏóµÄñîºÏ¶È¡£·¢ËÍÐźŵÄQt¶ÔÏó²»ÐèÒªÖªµÀÊÇÄĸö¶ÔÏóÀ´½ÓÊÕËüµÄÐźţ¬ËüÖ»ÐèÒª×öµÄÊÇÔÚÊʵ±µÄʱ¼ä·¢ËÍÒ»¸öÐźţ¬¶øÇÒ²»ÐèÒªÖªµÀÒ²²»¹ØÐÄËüµÄÐźÅÓÐûÓб»½ÓÊÕµ½£¬¸ü²»ÐèÒªÖªµÀÄĸö¶ÔÏóµÄÄĸö²Û½ÓÊÕµ½ÁËÐźš£
ͬÑùµØ£¬Qt¶ÔÏóµÄ²ÛÒ²²»ÐèÒª¹ØÏµÊÇÄÄЩÐźÅÁ¬½ÓÁË×Ô¼º£¬Èç¹ûÐźźͲÛÁ¬½ÓÉÏÁË£¬Qt¾ÍÄܱ£Ö¤ÁËÊʺϵIJ۵õ½Á˵÷Ó᣼´Ê¹¹ØÁªµÄ¶ÔÏóÔÚÔËÐÐʱ±»É¾³ý¡£Ó¦ÓóÌÐòÒ²²»»á±ÀÀ£¡£
ÐźźͲ۵ÄЧÂÊ
ÐźźͲۻúÖÆÔöÇ¿Á˶ÔÏó¼äͨÐŵÄÁé»îÐÔ£¬µ±È»ÔÚÔö¼ÓÁé»îÐÔµÄͬʱÔÚÐÔÄÜ·½ÃæÒ²»áÓÐÒ»¶¨µÄËðʧ¡£Í¬´ó¼Ò»Øµ÷º¯ÊýÏà±È£¬ÐźźͲۻúÖÆÔËÐÐËÙ¶ÈÓÐЩÂý¡£Í¨³££¬Í¨¹ý´«µÝÒ»¸öÐźÅÀ´µ÷Óòۺ¯Êý½«»á±ÈÖ±½Óµ÷ÓÃÖ±½Óµ÷Ó÷ÇÐ麯ÊýÔËÐÐËÙ¶ÈÂý10±¶¡£
ÔÒò£º
ÐèÒª¶¨Î»½ÓÊÕÐźŵĶÔÏó¡£
°²È«µØ±éÀúËùÓеĹØÁª¡£
±à×é/½â×é´«µÝµÄ²ÎÊý¡£
¶àÏ̵߳Äʱºò¡£ÐźſÉÄÜÐèÒªÅŶӵȴý¡£
È»¶ø£¬Óë´´½¨¶Ñ¶ÔÏóµÄnew²Ù×÷¼°É¾³ý¶Ñ¶ÔÏóµÄdelete²Ù×÷Ïà±È£¬ÐźźͲ۵ÄÔËÐдú¼ÛÖ»ÊÇËüÃǺÜÉÙÒ»²¿·Ö¡£ÐźźͲۻúÖÆµ¼ÖµÄÕâµãÐÔÄÜËðºÄ£¬¶ÔʵʱӦÓóÌÐòÊÇ¿ÉÒÔºöÂԵģ»Í¬ÐźźͲÛÌṩµÄÁé»îÐԺͼò±ãÐÔÏà±È£¬ÕâµãÐÔÄÜËðºÄÊÇÖµµÃµÄ¡£
Qt ²¼¾Öϵͳ½éÉÜ
²¼¾Öϵͳ
×÷ΪһÃû iOS ¿ª·¢ÈËÔ±, ¼ûÖ¤×Å iOS ²¼¾ÖϵͳµÄ²»¶ÏÍêÉÆ, ´Ó¾ø¶Ô²¼¾Ö, Autoresizing
µ½ Autolayout. ʹµÃ¿ª·¢ÈËÔ±µÄ¹¤×÷ЧÂÊÔ½À´Ô½¸ß, ÏîÄ¿½çÃæµÄ¿É¶ÁÐÔºÍÒ×ά»¤ÐÔÔ½À´Ô½Ç¿.
Èç½ñ IDE ÖеĿÉÊÓ»¯½çÃæ¹¤¾ßÒѾ·Ç³£Ç¿´ó, Ðí¶àÍøÓÑ"Ï·³Æ" iOS ¿ª·¢ÕßΪ"UI
ÍÏקʦ", ¿É¼û, iOS ¿ª·¢ÖнçÃæ²¼¾ÖϵͳµÄ¸ßЧ. ËùÒÔ, ÓÅÐãµÄ²¼¾ÖϵͳµÄʹÃüÔÚÓÚÈÿª·¢Õß»¨¸üÉÙµÄʱ¼äÀ´Íê³É¸üÒ×ά»¤µÄ½çÃæ.
ͬÑùµÄ, ÔÚ Qt ÖÐ, ϵͳÌṩÁËÇ¿´óµÄÅŰæ»úÖÆÀ´Îª´°¿ÚÖеÄÊÓͼ½øÐв¼¾ÖÅŰæ, ¾¹ýÁË¶Ô Qt ²¼¾ÖÒ»¸ö³õ²½µÄ̽Ë÷,
²»µÃ²»¶Ô Qt ²¼¾ÖϵͳµÄ¼ò½à¸ßЧ¶øÓÖ¹¦ÄÜÇ¿´ó±íʾÔÞ̾.
²¼¾ÖϵͳµÄ¹¦ÄÜ
ÔÚ Qt ÖÐ, ²¼¾Öϵͳ¿ÉÒÔÍê³É
¶¨Î»×ӿؼþ
µÃÖª´°ÌåĬÈÏ´óС
µÃÖª´°Ìå×îС´óС
´°Ìå´óС±ä»¯Ê±½øÐв¼¾ÖÅŰæ
ÄÚÈݸıä(×ÖÌå´óСÎı¾µÈ, Òþ²Ø»òÏÔʾ, ÒÆ³ý)ʱ½øÐв¼¾ÖÅŰæ
²¼¾ÖϵͳµÄ½á¹¹
Qt ÌṩÁË QLayout À༰Æä×ÓÀàÀ´Îª½çÃæ½øÐÐÅŰ沼¾Ö. ½á¹¹ÈçÏÂͼ:

²¼¾Öϵͳ½á¹¹Í¼
QLayout ÊDz¼¾ÖϵͳÖеijéÏó»ùÀà, ¼Ì³Ð×Ô QObject ºÍ QLayoutItem, ÆäÖÐËĸö×ÓÀà·Ö±ðΪ
QBoxLayout(Ïäʽ²¼¾Ö)
QFormLayout(±íµ¥²¼¾Ö)
QGridLayout(Íø¸ñ²¼¾Ö)
QStackedLayout(Õ»²¼¾Ö)
ÔÚÕæÊµÊ¹Óó¡¾°ÖÐ, ÍùÍùÐèҪͨ¹ý¶àÖÖ²¼¾ÖµÄÏà½áºÏÀ´Íê³É½çÃæµÄÉè¼Æ, ½ÓÏÂÀ´½«·Ö±ð½éÉÜËÄÖв¼¾Ö.
QBoxLayout Ïäʽ²¼¾Ö
Ïäʽ²¼¾ÖÌṩÁËÁ½¸ö×ÓÀà·Ö±ð´¦Àíˮƽ(QHBoxLayout)ºÍ´¹Ö±(QVBoxLayout)Á½¸ö·½ÏòµÄÅŰæ,
¿ÉÒÔʹÊÓͼÅųÉÒ»ÐлòÕßÒ»ÁÐÀ´ÏÔʾ. ¼òµ¥Ëµ, ¾ÍÊÇ¿ÉÒÔÈÿؼþ½øÐÐÅÅÅÅÕ¾, ±ÈÈçÔÚÎÒÃÇµÄ AlphaBox
ÖÐ, ¶¥²¿µÄÍ·Ïñ, ÐÕÃû, ºÍˢа´Å¥ÅųÉÁËÒ»ÅÅ, Õâ¾ÍÊÇˮƽÏäʽ²¼¾Ö:

ʲô½ÐÅÅÅÅÕ¾
ÄãÒÔΪÎÒÒª½²Ò»ÏÂÕâ¸ö¶«Î÷ÈçºÎʵÏÖ? NO, ÎÒÆ«Æ«ÒªÒÔ´¹Ö±Ïäʽ²¼¾ÖΪÀý,
ÓÃÒ»¸ö×î¼òµ¥µÄÀý×ÓÀ´½éÉÜÏäʽ²¼¾ÖµÄʹÓÃ, Ê×ÏÈ´´½¨Ò»¸ö»ùÓÚ QWidget µÄ½çÃæ, Ìí¼ÓÎÒÃÇÐèҪʹÓõÄÍ·Îļþ:
#include <QVBoxLayout>
#include <QPushButton> |
²¢ÔÚ¹¹Ô캯ÊýÖÐÌí¼ÓÈçÏ´úÂë
// Ìí¼ÓÁ½¸ö°´Å¥
QPushButton *okBtn = new QPushButton;
okBtn ->setText(tr("ÎÒÔÚÉÏÃæ, ÎÒ×îÅ£"));
QPushButton *celBtn = new QPushButton;
celBtn->setText(tr("ÎÒÔÚÏÂÃæ, ÎÒ²»·þ"));
// ´´½¨Ò»¸ö´¹Ö±Ïäʽ²¼¾Ö, ½«Á½¸ö°´Å¥ÈÓ½øÈ¥
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(okBtn);
layout->addWidget(celBtn);
// ÉèÖýçÃæµÄ²¼¾ÖΪ´¹Ö±Ïäʽ²¼¾Ö
setLayout(layout); |
ÔËÐп´Ò»ÏÂЧ¹û, ʲô? Õâ¾Í¿ÉÒÔÔËÐÐÁË? ×ø±êÄØ? ³ß´çÄØ? ÊǵÄ, û¿´´í...µã»÷ÔËÐÐ:

×î¼òµ¥µÄÏäʽ²¼¾Ö
Á½¸ö°´Å¥ÒѾһÉÏÒ»ÏÂ, ¹Ô¹ÔµÄÔÚ´¹Ö±·½Ïò×Ô¼ºÕ¾ºÃÁËλÖÃ, ¾ÍÊÇÕâôǿ´ó, ¾ÍÊÇÕâôʡÐÄ.
QFormLayout ±íµ¥²¼¾Ö
Ç¿´óµÄ AlphaBox ÊǺÜÍâÏòµÄ, ¿ÉÒÔºÜÇáËɵĽ«ÄãµÄ×ÊÁÏ·ÖÏí¸øÆäËûÓû§, µ±ÎÒÃÇ·ÖÏíµÄʱºò,
»áÓÐÕâÑùÒ»¸ö½çÃæ:

ÔÚ AlphaBox Öй²Ïí×ÊÁÏ
¿´µ½Õâ¸ö½çÃæ, ´ÏÃ÷µÄÄã¿ÉÄÜ»á˵, ÕâºÜ¼òµ¥°¡, ºÃ¼¸¸öˮƽÏäʽ²¼¾Ö¾Í¿ÉÒÔʵÏÖ, ¿ÉÊÇ, ¸ü´ÏÃ÷µÄ
Qt ÌṩÁ˸ü¸ßЧµÄ·½Ê½°ïÖúÄãÍê³ÉÕâÑùÒ»¸ö½çÃæ, ÄǾÍÊÇ QFormLayout.
ÔÚÎÒËùѧϰ Qt ËùʹÓõÄÊé¼®ÖÐ, ½« QFormLayout ·ÒëΪ´°Ìå²¼¾Ö, ÎÒ¸öÈËÈÏΪ, ½«Æä·ÒëΪ±íµ¥²¼¾Ö¸üΪÌùÇÐ,
ÒòΪ QFormLayout µÄÇ¿´óÖ®´¦ÕýÊÇ¿ÉÒÔʹÓÃ×î¿ìµÄËÙ¶ÈÍê³ÉÒ»¸öÓû§ÊäÈëµÄ±íµ¥½çÃæµÄ´î½¨.
ÄÇô, ÈÃÎÒÃǽҿª AlphaBox µÄÉñÃØÃæÉ´, ¿´¿´ÕâÑùÒ»¸ö½çÃæÊÇÔõôʵÏÖµÄ.
Ê×ÏÈ, ÍÏ×§Ò»¸ö Form Layout µ½ Widget ÖÐ.

Ìí¼Ó±íµ¥²¼¾Ö
Ë«»÷Ö®ºó¼´¿ÉΪ±íµ¥Ôö¼ÓÒ»ÐÐ.

Ϊ±íµ¥Ôö¼ÓÒ»ÐÐ
ÏàÐÅ´ó¼Ò¿´µ½ÕâÕÅͼʱ, ¾ÍÒѾÄÜÀí½âµ½±íµ¥²¼¾ÖÊÇÈçºÎʹÓõÄ, ÌṩÁ˱êÇ©×÷ΪÓû§ÊäÈëÄÚÈݵÄÖ¸Òý, Ìṩ×Ö¶ÎÀàÐÍ×÷ΪÓû§ÊäÈëµÄ¿Ø¼þ,
×÷Ϊ iOS ¿ª·¢Õß, ÉîÖªÕâÑùÒ»¸ö½çÃæµÄ´î½¨ËùÐèÒªµÄ·±ÔӵŤ×÷Á¿. µ±ÎÒµÚÒ»´Î´ò¿ªÕâ¸ö½çÃæÊ±, ±»ÕâÑù´´½¨½çÃæµÄ·½Ê½Ëù¾ª´ôÁË.
°´ÕÕͼÖÐ, ´´½¨±íµ¥µÄµÚÒ»ÐÐ, ¹²Ïí¸øÄĸöÓû§µÄÊäÈë¿ò, ¿ÉÒÔΪÊäÈë¿òÌîдռλÎÄ×Ö.
Ë«»÷ Form Layout ´´½¨×Ö¶ÎÀàÐÍΪ QComboBox (¶àÑ¡¿ò)µÄÒ»ÐÐ. ÌîдÔÊÐíµÄȨÏÞÄÚÈÝ.
ÉèÖÃÕû¸ö Widget ²¼¾ÖΪ´¹Ö±Ïäʽ²¼¾Ö
ÔÚ Form Layout ÏÂÍÏ×§¹ýÈ¥Ò»¸ö Horizontal Layout(ˮƽÏäʽ²¼¾Ö)
ÔÚÏäʽ²¼¾ÖÖÐÌí¼Ó Horizontal Spacer (ˮƽռλ) ºóÍÏ×§Á½¸ö Push Button
Íê³É½çÃæ²¼¾Ö

¹²Ïí½çÃæµÄ²¼¾Ö
¿ì²»¿ì? ¿ì²»¿ì! ¿ì²»¿ì!!!
ͬÑùµÄ, Èç¹ûÊÇʹÓô¿´úÂë±íµ¥²¼¾ÖµÄ»°¿ÉÒÔʹÓÃaddRow()µÄ·½·¨À´Ìí¼ÓÒ»ÐÐ.
QGridLayout Íø¸ñ²¼¾Ö

Ç¿´óµÄ AlphaBox ÊÇÕâÑùµÄ
ÊÂʵÉÏ, Ç¿´óµÄ AlphaBox ÊÇÕâÑùµÄ, ÎÒÃÇ¿ÉÒÔ¹²Ïí¸ø¶à¸öÓû§, ¶øÇÒ, Ï·½»áÓÐÒ»¸öÁбí,
չʾ¹²ÏíµÄÓû§ÒÔ¼°È¨ÏÞÁбí. Õâʱ, ±íµ¥²¼¾Ö¾Íû°ì·¨Âú×ãÎÒÃÇ, Ö»ºÃÁíÇóл¶ QGridLayout
- Íø¸ñ²¼¾Ö.
Íø¸ñ²¼¾Ö¹ËÃû˼Òå, ¿ÉÒÔ½«½çÃæ·Ö¸î³ÉÐÐÁÐÀ´½øÐв¼¾Ö¹ÜÀí, ÔÚÿ¸öµ¥Ôª¸ñÖÐÀ´°Ú·Å¿Ø¼þ. ËùÒÔ AlphaBox
·ÖÏíµÄ½çÃæÊ¹ÓÃÁËÒ»¸ö Á½ÐÐÈýÁÐ µÄÍø¸ñ²¼¾ÖÀ´ÊµÏÖµÄ.

QGridLayout - Íø¸ñ²¼¾Ö
µ±È», ¸ü¸ü¸´ÔӵĽçÃæ, Óà Qt ²¼¾ÖµÄЧÂÊÒ²ÊǷdz£¸ßµÄ, ÎÒ×öÁËÒ»¸öÍâÁ´·ÖÏíµÄ²¼¾Ö Demo,
¿ÉÒÔ½«ÄÚ²¿×ÊÁÏÉú³ÉÒ»¸öÏÂÔØÁ´½Ó¹²Ïí¸øÈκÎÈËÈ¥ÏÂÔØ.

ÍâÁ´·ÖÏí½çÃæ
Õâ¸ö½çÃæÖÐ, ÎÒÔÚTabÖ®ÄÚʹÓÃÁËÍø¸ñ²¼¾Ö, ²¼¾ÖÈçͼ:

ÍâÁ´·ÖÏí½çÃæ²¼¾Ö
´ÓͼÖпÉÒÔ¿´³ö, Íø¸ñ²¼¾ÖÏñÊÇÔÚ²Ù×÷Ò»¸ö Excel Ò»Ñù¼òµ¥, ²¼¾Öµ¥Ôª¸ñ, ºÏ²¢µ¥Ôª¸ñ, µÈµÈ.
ÔÚÕâ¸ö½çÃæÖÐ, ¸üÁé»îµÄʹÓÃÁË QLayout µÄÊôÐÔÀ´Íê³ÉÁ˽çÃæ²¼¾ÖÅŰæ.
ͬÑùµÄ, ÔÚ´úÂëÖÐ, ¿ÉÒÔʹÓÃÈçÏÂµÈµÄ Api À´ÎªÍø¸ñÊÓͼÌí¼ÓÒ»¸ö´Ó¼¸Ðм¸ÁпªÊ¼Õ¼¾Ý¼¸Ðм¸ÁеĿؼþ:
void addWidget(QWidget
*, int row, int column, int rowSpan, int columnSpan) |
QStackedLayout Õ»²¼¾Ö
ÈçÔÚ AlphaBox ÖÐ, ÎÒÃÇ¿ÉÒÔͨ¹ýÔÆ¶ËÎļþä¯ÀÀÆ÷Ö±½Ó²é¿´ºÍ²Ù×÷ÔÆ¶ËÎļþ, ÔÚ¼ÓÔØµÄ¹ý³ÌÖÐ,
»áÓÐÒ»¸öת¾Õ»¨µÄ½çÃæ.

ÔÚת¾Õ»¨µÄ AlphaBox
¼ÓÔØÊ§°ÜʱµÄ´íÎóÌáʾ:

¾Õ»¨×ªÊ§°ÜÁ赀 AlphaBox
ÒÔ¼°¼ÓÔØ³É¹¦Ê±:

ͨ³£Çé¿öÏÂÎÒÃÇÄÜ¿´¼ûµÄ AlphaBox
ͨ³£Ó¦ÓõĽçÃæ»á¸ù¾Ý²»Í¬µÄ״̬Óв»Í¬µÄÄÚÈÝ, Õâʱ¾Í¿ÉÒÔʹÓà QStackedLayout Õ»²¼¾Ö,
Õ»²¼¾ÖÌṩÁËÒ»¸öÒ³ÃæµÄÕ», ÿ¸öÒ³ÃæÓÐÍêÈ«¶ÀÁ¢µÄ½çÃæ²¼¾Ö. ¿ÉÒԷdz£ÇåÎúµÄ¶Ô²»Í¬×´Ì¬ÏµĽçÃæ½øÐв¼¾Ö¹ÜÀí.
ÔÚ Qt µÄ¿ÉÊÓ»¯²¼¾Ö¹¤¾ßÖÐ, ͨ¹ý Stacked Widget À´Íê³É½çÃæµÄÕ»²¼¾Ö

Stacked Widget
ͨ¹ýÓÒ¼üÀ´½øÐÐÒ³ÃæµÄ²åÈëÒÆ³ýºÍÅÅÐòµÈ²Ù×÷.
|