锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍦ㄦ渶榪戠殑web寮鍙戜腑鏄笉鏄氨浼?xì)鐢ㄥ堫C竴浜涢夋嫨鍣紝鍙戠幇寰堝灝ゅ叾鏄疌SS3鏂板鐨勪笉澶啛鎮(zhèn)夛紝鍦ㄦ鎬葷粨涓涓嬨?/p> 涓嶅悓綰у埆 1. 鍦ㄥ睘鎬у悗闈嬌鐢?!important 浼?xì)瑕嗙洊椤甸潰鍐呬恢M綍浣嶇疆瀹氫箟鐨勫厓绱犳牱寮忋?/p> 2.浣滀負(fù)style灞炴у啓鍦ㄥ厓绱犲唴鐨勬牱寮?/p> 3.id閫夋嫨鍣?/p> 4.綾婚夋嫨鍣?/p> 5.鏍囩閫夋嫨鍣?/p> 6.閫氶厤絎﹂夋嫨鍣?/p> 7.嫻忚鍣ㄨ嚜瀹氫箟 鍚屼竴綰у埆 鍚屼竴綰у埆涓悗鍐欑殑浼?xì)瑕嗙洊鍏堝啓鐨勬牱寮?/p> 鎴戝氨涓嶄竴涓涓句緥瀛愪簡錛岄夋嫨鍣ㄥ茍涓嶆槸鍙兘鍐欎袱灞傦紝鍙戠幇鏈変簺灝忔湅鍙嬫湁榪欑璇В錛岃涓哄彧鑳藉啓E>F榪欐牱鐨勶紝鎴戜滑鍐欏彲浠ュ啓E>F.class Element榪欐牱錛屼綘瑕佷綘鎼炲緱瀹氫紭鍏堢駭 鑷姩閲嶅惎錛屼篃灝辨槸閫鍑哄綋鍓嶈繘紼嬶紝鍚姩涓涓柊鐨勮繘紼嬨備簬鏄紝鍏堢湅紼嬪簭濡備綍閫鍑?/p> Qt紼嬪簭鐨勪竴鑸粨鏋勫涓嬶細(xì) 鏈鍚庝竴鍙ュ惎鍔ㄤ簡涓葷嚎紼嬬殑浜嬩歡寰幆銆傝岃閫鍑虹▼搴忥紝灝辨槸瑕侀鍑鴻繖涓簨浠跺驚鐜紝浣縨ain鍑芥暟榪斿洖銆?/p> 姝g‘鏂瑰紡錛?/p> 瀹冭繕鏈変竴涓┈鐢?/p> 瀵逛簬QApplication鏉ヨ錛屽畠鏈変竴涓父鐢ㄧ殑灞炴?/p> 鎵浠ワ紝褰撴渶鍚庝竴涓獥鍙e叧闂椂錛屽畠鍙互鑷姩璋冪敤鍓嶉潰鐨別xit() 鑰岃嚦浜庡叧闂獥鍙e憿錛屾垜浠繕鍙互浣跨敤 娉細(xì)涓鑸潵璇達(dá)紝瀵逛簬澶氫釜紿楀彛鐨勭▼搴忥紝璋冪敤榪欎釜浼?xì)姣旂洿鎺ヨ皟鐢╭uit瑕佸ソ銆傚洜涓鴻繖鏍風(fēng)獥鍙e彲浠ユ帴鍙楀埌Close浜嬩歡銆?/p> 鍦≦t涓紝鍋氳繖涓伐浣滅殑闈濹Process鑾睘浜嗭紝瑕佸惎鍔ㄥ綋鍓嶇▼搴忕殑鍙︿竴涓繘紼嬶紝鏈夎浣夸簩鑰呮病鏈?鐖跺瓙"鍏崇郴銆傛仼 鍙槸錛屼負(fù)浠涔堜笉鍐欐垚涓嬮潰榪欐牱錛?/p> 褰撶劧錛屽鏋滆礬寰勪腑涓嶅寘鍚┖鏍鹼紝榪欎釜涔熷彲浠ュ伐浣溿?/p> 鐜板湪綆鍗曚簡錛岃閲嶆柊鍚姩錛屽彧闇瑕佽皟鐢?/p> 鎴栬咃細(xì) 灝界娌′粈涔堝ソ澶勶紝浣嗘湁鏃跺欙紝鎴戜技涔庢洿鍠滄榪欐牱鍐欙細(xì) 鐒跺悗main鍑芥暟鏀規(guī)垚 榪欓噷闈㈡垜鐢ㄤ簡涓涓瓟鏁幫細(xì)773錛屾病浠涔堢壒鍒惈涔夛紝鍙槸鍥犱負(fù)鎴戣寰?/p> 涓婄彮浜嗭紝灝卞啓鍒拌繖鍎?.. QTableView錛氾細(xì)verticalScrollBar()->setSliderPosition()錛?span style="word-wrap: normal; word-break: normal; line-height: 18px;"> QTableView錛氾細(xì)verticalScrollBar()->maximum(); QTableView錛氾細(xì)verticalScrollBar()->value(); 鐪嬪涓嬩唬鐮佺ず渚嬶細(xì) 灝嗗姩鐢諱滑寮勫埌涓璧?/strong> 鏃㈢劧涓涓姩鐢葷粍鏈氨鏄竴涓姩鐢葷被錛屼綘鍙互鎶婂畠娣誨姞鍒板叾瀹冪粍涓傚姝わ紝浣犲彲浠ュ緩绔嬭搗涓涓姩鐢繪爲(wèi)銆?br /> Qt鍔ㄧ敾鏋舵瀯涓殑涓昏綾誨涓嬪浘鎵紺猴細(xì) 鍔ㄧ敾妗嗘灦鐢卞熀綾?/span>QAbstractAnimation鍜屽畠鐨勪袱涓効瀛?/span>QVariantAnimation鍜?/span>QAnimationGroup緇勬垚銆?/span>QAbstractAnimation鏄墍鏈夊姩鐢葷被鐨勭瀹椼傚畠鍖呭惈浜嗘墍鏈夊姩鐢葷殑鍩烘湰灞炴с傛瘮濡傚紑濮嬶紝鍋滄鍜屾殏鍋滀竴涓姩鐢葷殑鑳藉姏銆傚畠涔熷彲浠ユ帴鏀舵椂闂存敼鍙橀氱煡銆?/span> 鍔ㄧ敾妗嗘灦鍙堣繘涓姝ユ彁渚涗簡QProertyAnimation綾匯傚畠緇ф壙鑷?/span>QVariantAnimation騫跺鏌愪釜Qt灞炴э紙瀹冮』鏄?/span>Qt鐨?#8221;鍏冩暟鎹璞$郴緇?#8221;鐨勪竴閮ㄥ垎錛岃http://blog.csdn.net/nkmnkm/article/details/8225089錛夋墽琛屽姩鐢匯傛綾誨灞炴ф墽琛屼竴涓鏉炬洸綰挎彃鍊箋傛墍浠ュ綋浣犳兂鍘誨姩鐢諱竴涓兼椂錛屼綘鍙互鎶婂畠澹版槑涓轟竴涓睘鎬э紝騫朵笖璁╀綘鐨勭被鎴愪負(fù)涓涓?/span>QObject銆傝繖緇欎簣鎴戜滑鏋佸ぇ鐨勮嚜鐢卞害鏉ュ姩鐢婚偅浜涘凡瀛樺湪鐨?/span>widget鍜屽叾瀹?/span>QObject銆?/span> 澶嶆潅鐨勫姩鐢誨彲浠ラ氳繃寤虹珛涓涓?/span>QAbstractAnimation鐨勬爲(wèi)鏉ユ瀯寤恒傝繖涓爲(wèi)閫氳繃浣跨敤QAnimationGroups鏉ュ垱寤猴紝QAnimationGroups浣滀負(fù)鍏跺畠鍔ㄧ敾鐨勫鍣ㄣ傛敞鎰忓姩鐢葷粍涔熸槸浠?/span>QAbstractAnimation媧劇敓鐨勶紝鎵浠ュ姩鐢葷粍鍙互鍐嶅寘鍚叾瀹冨姩鐢葷粍銆?/span> 鍔ㄧ敾妗嗘灦鍙互鍗曠嫭浣跨敤錛屽悓鏃朵篃琚璁′負(fù)鐘舵佹満妗嗘灦鐨勪竴閮ㄥ垎銆傜姸鎬佹満鎻愪緵浜嗕竴涓壒瀹氱殑鐘舵佸彲浠ョ敤鏉ユ挱鏀懼姩鐢匯傚湪榪涘叆鎴栭鍑烘煇涓姸鎬佹椂QState涔熷彲浠ヨ緗睘鎬т滑錛屽茍涓旇繖涓壒瀹氱殑鍔ㄧ敾鐘舵佸皢鍦ㄦ寚瀹?/span>QPropertyAnimation鏃剁粰浜堢殑鍊間箣闂村仛鎻掑艱繍綆椼傚悗闈㈡垜浠榪涗竴姝ヤ粙緇嶆闂銆?/span> 鍦ㄥ満鏅殑鑳屽悗錛屽姩鐢昏涓涓叏灞瀹氭椂鍣ㄦ敹闆嗭紝榪欎釜瀹氭椂鍣ㄥ彂閫?/span>update鍒版墍鏈夌殑姝e湪鎾斁鐨勫姩鐢諱腑銆?/span> 鎵鏈夊姩鐢葷被鐨勫熀綾?/span> 鍔ㄧ敾緇勭殑鍩虹被 鎺у埗鍔ㄧ敾鐨勫鏉炬洸綰跨被 騫惰鍔ㄧ敾緇勭被 涓茶鍔ㄧ敾緇勭被鐨勬殏鍋滅被 鍔ㄧ敾Qt灞炴х殑綾?/span> 涓茶鍔ㄧ敾緇勭被 鎺у埗鍔ㄧ敾鐨勬椂闂寸嚎綾?/span> 鍚勫姩鐢葷被鐨勮櫄鍩虹被 濡傚墠闈㈡墍璁詫紝QPropertyAnimation綾誨彲浠ヤ慨鏀?/span>Qt灞炴т滑銆傝鍔ㄧ敾涓涓鹼紝灝遍渶瑕佷嬌鐢ㄦ綾匯傚疄闄呬笂錛屽畠鐨勭埗綾伙紝QVariantAnimation錛屾槸涓涓櫄鎷熺被錛屼笉鑳借鐩存帴浣跨敤銆?/span> 鎴戜滑閫夋嫨鍔ㄧ敾Qt灞炴х殑涓涓富瑕佺悊鐢辨槸Qt灞炴т負(fù)鎴戜滑鎻愪緵浜嗚嚜宸卞姩鐢誨凡瀛樺湪鐨勭被鐨勮嚜鐢卞害銆傚挨鍏舵槸QWidget綾伙紙鎴戜滑涔熷彲浠ユ妸瀹冨祵鍏ュ埌涓涓?/span>QGraphicsView涓級(jí)鍏鋒湁寰堝灞炴ц〃紺哄叾bounds,colors絳夌瓑銆傝鎴戜滑鐪嬩竴涓皬渚嬪瓙錛?/span> 榪欐浠g爜灝嗘妸鎸夐挳鍦?/span>10縐掔鍐呬粠灞忓箷鐨勫乏涓婅縐誨姩鍒?/span>(250,250)澶勩?/span> 涓婇潰鐨勪緥瀛愪婦鍦ㄥ紑濮嬪煎拰緇撴潫鍊間箣闂村仛綰挎ф彃鍊箋傝繕鍙互鍦ㄥ紑濮嬪拰緇撴潫鍊間箣闂磋緗鹼紝鎻掑艱繍綆楀氨浼?xì)缁彉q囪繖浜涚偣銆?/span> 鍦ㄦ渚嬩腑錛屽姩鐢誨皢鎸夐挳鍦?縐掍腑鍐呭紕鍒?250,250)澶勶紝鐒跺悗鍦?縐掔鍐呭張寮勫洖鍘熶綅銆傜Щ浣嶆槸鍦ㄨ繖浜涚偣涓棿浠ョ嚎鎬ф彃鍊艱繘琛岀殑銆?/p> 鍦ㄤ笂渚嬩腑錛屾垜浠淳鐢熶簡QGraphicsRectItem騫跺畾涔変簡涓涓猤eometry灞炴с傛垜浠幇鍦ㄥ彲浠ュ姩鐢昏繖涓獁idget鐨刧eometry浜嗭紝鍗充嬌QGraphicsRectItem娌℃湁鎻愪緵geometry灞炴с?/p> 褰撲綘鎯沖姩鐢?/span>QGraphicsItems錛屼綘涔熻鐢?/span>QPropertyAnimation銆傜劧鑰岋紝QGraphicsItem涓嶆槸浠?/span>QObject媧劇敓鐨勩備竴涓ソ鐨勮В鍐蟲柟妗堟槸媧劇敓瑕佸姩鐢葷殑鍥懼艦item銆傛淳鐢熺被涔熻浠?/span>QObject媧劇敓銆傝繖鏍鳳紝QPropertyAnimation灝卞彲浠ヨ鐢ㄤ簬QGraphicsItems浜嗐?/span> 灝卞涓婁竴鑺備腑鎵璁茬殑錛屾垜浠渶瑕佸畾涔夊笇鏈涘幓鍔ㄧ敾鐨勫睘鎬с?/span> 娉ㄦ剰錛?/span>QObject蹇呴』鏄戶鎵夸腑鐨勭涓涓紝鍥犱負(fù)鍏冩暟鎹璞$郴緇熼渶瑕佽繖鏍峰仛銆?/span> QPropertyAnimation鍦ㄥ睘鎬х殑寮濮嬪煎拰緇撴潫鍊間箣闂存墽琛屼竴涓彃鍊艱繍綆椼傞櫎浜嗗悜鍔ㄧ敾娣誨姞鏇村鐨勫叧閿煎錛屼綘榪樺彲浠ヤ嬌鐢ㄤ竴涓鏉炬洸綰褲傚鏉炬洸綰挎弿榪頒簡涓涓湪0鍜?/span>1涔嬮棿鎻掑肩殑閫熷害鍙樺寲鐨勫嚱鏁幫紝濡傛灉浣犳兂鎺у埗涓涓姩鐢葷殑閫熷害鑰屼笉鏀瑰彉鎻掑肩殑璺緞鏃訛紝灝遍潪甯告湁鐢ㄣ?/span> 榪欓噷錛屽姩鐢誨皢鎸夌収涓涓洸綰胯繘琛岋紝榪欎釜鏇茬嚎浣垮緱鍔ㄧ敾鍍忎竴涓煩鍔ㄧ殑鐨悆浠庡紑濮嬩綅緗煩鍒扮粨鏉熶綅緗?/span>QEasingCurve鍏鋒湁涓涓ぇ鏇茬嚎闆嗗悎錛屼綘鍙互浠庨噷闈㈤夋嫨涓涓傚畠浠瀹氫箟涓?/span>QEasingCurve::Type鏋氫婦銆傚鏋滀綘闇瑕佷笉涓鏍風(fēng)殑鏇茬嚎錛屼綘涔熷彲浠ヨ嚜宸卞疄鐜頒竴涓紝鐒跺悗娉ㄥ唽鍒?/span>QEasingCurve銆?/span>浼樺厛綰?/h3>
鍩虹閫夋嫨鍣?/h3>
閫夋嫨鍣?/strong> 鍚箟 * 閫氱敤鍏冪礌閫夋嫨鍣紝鍖歸厤欏甸潰浠諱綍鍏冪礌錛堣繖涔熷氨鍐沖畾浜嗘垜浠緢灝戜嬌鐢級(jí) #id id閫夋嫨鍣紝鍖歸厤鐗瑰畾id鐨勫厓绱?/td> .class 綾婚夋嫨鍣紝鍖歸厤class鍖呭惈(涓嶆槸絳変簬)鐗瑰畾綾葷殑鍏冪礌 element 鏍囩閫夋嫨鍣?/td> * { /*欏甸潰鎵鏈夊厓绱犻兘浣跨敤*/ border:0; } #test { /*id=test 鐨勫厓绱?/span>*/ background-color:#0e0; } .staus { /*鍚湁綾籹tatus鐨勫厓绱?/span>*/ border:0; } div { /*欏甸潰鎵鏈塪iv*/ background-color:#0e0; }
緇勫悎閫夋嫨鍣?/h3>
閫夋嫨鍣?/strong> 鍚箟 E,F 澶氬厓绱犻夋嫨鍣紝鐢?#8221;,鍒嗛殧錛屽悓鏃跺尮閰嶅厓绱燛鎴栧厓绱燜 E F 鍚庝唬閫夋嫨鍣紝鐢ㄧ┖鏍煎垎闅旓紝鍖歸厤E鍏冪礌鎵鏈夌殑鍚庝唬錛堜笉鍙槸瀛愬厓绱犮佸瓙鍏冪礌鍚戜笅閫掑綊錛?/strong>鍏冪礌F E>F 瀛愬厓绱犻夋嫨鍣紝鐢?#8221;>”鍒嗛殧錛屽尮閰岴鍏冪礌鐨勬墍鏈夌洿鎺ュ瓙鍏冪礌 E+F 鐩存帴鐩擱偦閫夋嫨鍣紝鍖歸厤E鍏冪礌涔嬪悗鐨?strong style="margin: 0px; padding: 0px;">鐩擱偦鐨?strong style="margin: 0px; padding: 0px;">鍚岀駭鍏冪礌F E~F 鏅氱浉閭婚夋嫨鍣紙寮熷紵閫夋嫨鍣級(jí)錛屽尮閰岴鍏冪礌涔嬪悗鐨?strong style="margin: 0px; padding: 0px;">鍚岀駭鍏冪礌F錛堟棤璁虹洿鎺ョ浉閭諱笌鍚︼級(jí) .class1.class2 榪欎釜濮戜笖涔熺畻涓涓惂錛屾病浠涔堝悕瀛楋紝鍖歸厤綾誨悕涓棦鍖呭惈class1鍙堝寘鍚玞lass2鐨勫厓绱?/td> 灞炴ч夋嫨鍣?/h3>
閫夋嫨鍣?/strong> 鍚箟 E[attr] 鍖歸厤鎵鏈夊叿鏈夊睘鎬ttr鐨勫厓绱狅紝div[id]灝辮兘鍙栧埌鎵鏈夋湁id灞炴х殑div E[attr=value] 鍖歸厤灞炴ttr鍊間負(fù)value鐨勫厓绱狅紝div[id=test],鍖歸厤id=test鐨刣iv E[attr~=value] 鍖歸厤鎵鏈夊睘鎬ttr鍏鋒湁澶氫釜絀烘牸鍒嗛殧銆佸叾涓竴涓肩瓑浜巚alue鐨勫厓绱?/td> E[attr|=value] 鍖歸厤鎵鏈塧tt灞炴у叿鏈夊涓?#8221;-”鍒嗛殧銆佸叾涓竴涓間互value寮澶寸殑鍏冪礌錛屼富瑕佺敤浜巐ang灞炴э紝姣斿“en”銆?#8220;en-us” E[attr ^=value] 鍖歸厤灞炴ttr鐨勫間互value寮澶寸殑鍏冪礌 E[attr $=value] 鍖歸厤灞炴ttr鐨勫間互value緇撳熬鐨勫厓绱?/td> E[attr *=value] 鍖歸厤灞炴ttr鐨勫煎寘鍚玽alue鐨勫厓绱?/td> 浼被閫夋嫨鍣?/h3>
閫夋嫨鍣?/strong> 鍚箟 E:first-child 鍖歸厤鍏冪礌E鐨勭涓涓瓙鍏冪礌 E:link 鍖歸厤鎵鏈夋湭琚偣鍑葷殑閾炬帴 E:visited 鍖歸厤鎵鏈夊凡琚偣鍑葷殑閾炬帴 E:active 鍖歸厤榧犳爣宸茬粡鍏朵笂鎸変笅銆佽繕娌℃湁閲婃斁鐨凟鍏冪礌 E:hover 鍖歸厤榧犳爣鎮(zhèn)仠鍏朵笂鐨凟鍏冪礌 E:focus 鍖歸厤鑾峰緱褰撳墠鐒︾偣鐨凟鍏冪礌 E:lang(c) 鍖歸厤lang灞炴х瓑浜巆鐨凟鍏冪礌 E:enabled 鍖歸厤琛ㄥ崟涓彲鐢ㄧ殑鍏冪礌 E:disabled 鍖歸厤琛ㄥ崟涓鐢ㄧ殑鍏冪礌 E:checked 鍖歸厤琛ㄥ崟涓閫変腑鐨剅adio鎴朿heckbox鍏冪礌 E::selection 鍖歸厤鐢ㄦ埛褰撳墠閫変腑鐨勫厓绱?/td> E:root 鍖歸厤鏂囨。鐨勬牴鍏冪礌錛屽浜嶩TML鏂囨。錛屽氨鏄疕TML鍏冪礌 E:nth-child(n) 鍖歸厤鍏剁埗鍏冪礌鐨勭n涓瓙鍏冪礌錛岀涓涓紪鍙蜂負(fù)1 E:nth-last-child(n) 鍖歸厤鍏剁埗鍏冪礌鐨勫掓暟絎琻涓瓙鍏冪礌錛?span style="margin: 0px; padding: 0px; font-family: 寰蔣闆呴粦, 'Segoe UI'; color: #ff0000;">絎竴涓紪鍙蜂負(fù)1 E:nth-of-type(n) 涓?nth-child()浣滅敤綾諱技錛屼絾鏄粎鍖歸厤浣跨敤鍚岀鏍囩鐨勫厓绱?/td> E:nth-last-of-type(n) 涓?nth-last-child() 浣滅敤綾諱技錛屼絾鏄粎鍖歸厤浣跨敤鍚岀鏍囩鐨勫厓绱?/td> E:last-child 鍖歸厤鐖跺厓绱犵殑鏈鍚庝竴涓瓙鍏冪礌錛岀瓑鍚屼簬:nth-last-child(1) E:first-of-type 鍖歸厤鐖跺厓绱犱笅浣跨敤鍚岀鏍囩鐨勭涓涓瓙鍏冪礌錛岀瓑鍚屼簬:nth-of-type(1) E:last-of-type 鍖歸厤鐖跺厓绱犱笅浣跨敤鍚岀鏍囩鐨勬渶鍚庝竴涓瓙鍏冪礌錛岀瓑鍚屼簬:nth-last-of-type(1) E:only-child 鍖歸厤鐖跺厓绱犱笅浠呮湁鐨勪竴涓瓙鍏冪礌錛岀瓑鍚屼簬:first-child:last-child鎴?:nth-child(1):nth-last-child(1) E:only-of-type 鍖歸厤鐖跺厓绱犱笅浣跨敤鍚岀鏍囩鐨勫敮涓涓涓瓙鍏冪礌錛岀瓑鍚屼簬:first-of-type:last-of-type鎴?:nth-of-type(1):nth-last-of-type(1) E:empty 鍖歸厤涓涓笉鍖呭惈浠諱綍瀛愬厓绱犵殑鍏冪礌錛?span style="margin: 0px; padding: 0px; font-family: 寰蔣闆呴粦, 'Segoe UI'; color: #ff0000;">鏂囨湰鑺傜偣涔熻鐪嬩綔瀛愬厓绱?/span> E:not(selector) 鍖歸厤涓嶇鍚堝綋鍓嶉夋嫨鍣ㄧ殑浠諱綍鍏冪礌 浼厓绱犻夋嫨鍣?/h3>
閫夋嫨鍣?/strong> 鍚箟 E:first-line 鍖歸厤E鍏冪礌鍐呭鐨勭涓琛?/td> E:first-letter 鍖歸厤E鍏冪礌鍐呭鐨勭涓涓瓧姣?/td> E:before 鍦‥鍏冪礌涔嬪墠鎻掑叆鐢熸垚鐨勫唴瀹?/td> E:after 鍦‥鍏冪礌涔嬪悗鎻掑叆鐢熸垚鐨勫唴瀹?/td>
]]>
]]>閫鍑?/h2>
int main(int argc, char** argv) { QApplication app(argc, argv); Widget w; w.show() return app.exec(); }濡備綍閫鍑猴紵
quitOnLastWindowClosed
鍚姩澶栭儴紼嬪簭
QProcess::startDetached(qApp->applicationFilePath(), QStringList());
QProcess::startDetached(qApp->applicationFilePath());
閲嶆柊鍚姩1
void XXX::onXXX() { qApp->quit(); QProcess::startDetached(qApp->applicationFilePath(), QStringList()); }void XXX::onXXX() { qApp->closeAllWindow(); QProcess::startDetached(qApp->applicationFilePath(), QStringList()); }閲嶆柊鍚姩2
void XXX::onXXX() { qApp->exit(773) }int main(int argc, char** argv) { .... int ret = app.exec(); if (ret == 773) { QProcess::startDetached(qApp->applicationFilePath(), QStringList()); return 0; } return ret; }773 = 'r'+'e'+'s'+'t'+'a'+'r'+'t' ==>restart
]]>
]]>
]]>
鍦╬ro閲屽鍔?/span>
TRANSLATIONS += myapp.ts鐒跺悗鍛戒護(hù)琛岃緭鍏update ***.pro
鎵撳紑.ts鏂囦歡錛屼竴鏉′竴鏉$殑緲昏瘧灝辨槸浜?br />鏈鍚巐release ***.pro
]]>
涓鏄笉鑳界洿鍦ㄥ爢鎴栨爤涓敓鎴怮ToolTip瀵硅薄銆傚洜涓哄叾鏋勯犲嚱鏁頒負(fù)縐佹湁銆?br />浜屾槸浠巜idget鑾峰彇鐨則ooltip涓嶆槸tooltip瀵硅薄錛岃屾槸tooltip涓殑鏂囨湰銆?br />涓夋槸tooltip璺熸湰涓嶆槸涓涓獁idget銆傛墍浠ヤ笉鎶婂畠褰撲綔widget鐢ㄣ?br />鍥涙槸tooltip綾繪槸涓涓潤鎬佺被錛屾墍浠ヨ窡鏈笉蹇呯敓鎴恡ooltip瀵硅薄灝卞彲浠ヤ嬌鐢ㄣ?br />浜旀槸tooltip綾諱笉鑳借瀹氬埗錛屾墍浠ヤ笉鑳戒粠瀹冧駭鐢熷悇縐嶅艦鐘剁殑tooltip紿楀彛銆?br />
QtoolTip鏈変袱縐嶄嬌鐢ㄦ柟寮忥細(xì)
涓鏄潤鎬乼ooltip銆傛瘮濡備負(fù)涓涓獁idget璁劇疆涓涓笉鍙樼殑tooltip鏂囨湰錛屽綋榧犳爣縐諱笂鍘繪椂鏄劇ずtooltip銆傛鏃跺緢綆鍗曪紝鍙渶璋冪敤widget鐨剆etToolTip()璁劇疆鏂囨湰鍗沖彲銆?br />浜屾槸鍔ㄦ乼ooltip銆備篃灝辨槸涓涓獁idget涓婄殑tooltip鏄彉鍖栫殑銆傛鏃墮渶瑕侀噸鍐橯Widget::event()鍑芥暟錛屽湪閲岄潰鍒ゆ柇浜嬩歡綾誨瀷錛屽鏋滄槸QEvent::ToolTip錛屽垯鎺у埗鏄劇ず鐨勬枃鏈殑鍐呭錛屽嵆鍙疄鐜板姩鎬乼ooltip銆?br />
閭d箞錛屽鏋滄兂闅忔椂鏄劇ずtooltip錛岃鎬庝箞鍋氬憿錛熷叾瀹炲崄鍒嗙畝鍗曪細(xì)鐩存帴璋冪敤QToolTip::showText()錛屾寚瀹氳鏄劇ず鐨勪綅緗氨琛屼簡銆傚洜涓簍ooltip綾葷殑鍑芥暟璺熸湰灝辯浉褰撲簬鍏ㄥ眬鍑芥暟鑰屽凡銆?br />
鍛靛懙錛屽叾瀹炲緢綆鍗曪紝浣嗕粠win32杞繃鏉ョ殑浜猴紝瑙夊緱鐪熷埆鎵?/div>
]]>
鏇存湁瓚g殑鏄紝QObject鍙互鍦ㄥ涓▼涓悓鏃朵嬌鐢紝鍙互鍙戝嚭淇″彿緇欏彟澶栫嚎紼嬬殑妲斤紝浠ュ強(qiáng)鍚?#8220;媧誨湪”鍙﹀綰跨▼涓殑瀵硅薄閭瘎浜嬩歡銆備互涓婁箣鎵浠ヨ兘鍙戠敓錛屾槸鍥犱負(fù)姣忎釜鍒濈▼閮借鍏佽鎷ユ湁瀹冭嚜宸辯殑浜嬩歡寰幆銆?br />QObject 閲嶅叆
QObject 鏄彲閲嶅叆鐨勩傚畠澶у鏁伴潪鐣岄潰媧劇敓綾伙紝姣斿QTimer,QTcpSocket,QFtp,鍜孮Process錛屼篃閮芥槸鍙噸鍏ョ殑錛屼嬌寰楀湪澶氫釜綰跨▼涓悓鏃朵嬌鐢?榪欎簺綾繪垚涓哄彲鑳姐備絾鏄敞鎰忚繖浜涚被琚璁′負(fù)鍦ㄤ竴涓嚎紼嬩腑鍒涘緩鍜屼嬌鐢紱鍦ㄤ竴涓嚎紼嬩腑鍒涘緩涓涓璞$劧鍚庡湪鍙︿竴涓嚎紼嬩腑璋冪敤瀹冪殑鏂規(guī)硶鏄笉鑳戒繚璇佷竴瀹氳兘宸ヤ綔鐨勩傛湁涓?涓檺鍒舵潯浠惰娉ㄦ剰錛?br /> QObject鐨勫効瀛愬繀欏誨湪鍒涘緩瀹冪埞鐨勭嚎紼嬩腑鍒涘緩銆傝繖琛ㄧず錛屼綘姘歌繙涓嶈兘灝哘Thread瀵硅薄(this)浣滀負(fù)parent浼犵粰鍦ㄦthread鍒涘緩鐨勫璞★紝鍥犱負(fù)綰跨▼瀵硅薄鑷繁灝辨槸鍦ㄥ彟涓涓嚎紼嬩腑鍒涘緩鐨勩?br /> 浜嬩歡椹卞姩鐨勫璞″簲璇ュ彧鐢ㄤ簬涓涓嚎紼嬩腑銆傝繖涓鏉″挨鍏跺簲鐢ㄤ簬瀹氭椂鍣ㄥ拰緗戠粶妯″潡銆傛瘮濡傦紝浣犱笉鑳藉湪鍒涘緩瀵硅薄涔嬪鐨勭嚎紼嬩腑鍚姩涓涓畾鏃跺櫒鎴栬繛鎺ヤ竴涓猻ocket銆?br /> 浣犲繀欏諱繚璇佸湪綰跨▼涓垱寤虹殑涓鍒囧璞″湪QThread琚垹闄や箣鍓嶈鍒犻櫎銆傝繖鍙互閫氳繃鍦ㄤ綘鐨剅un()瀹炵幇涓湪媯т腑鍒涘緩瀵硅薄鏉ヨ交鏉炬悶瀹氥?br />
灝界QObject鏄彲閲嶅叆鐨勶紝浣咷UI綾伙紝灝ゅ叾鏄疩Widget鍜屽畠鎵鏈夌殑媧劇敓綾諱滑錛岄兘涓嶆槸鍙噸鍏ョ殑銆傚畠浠彧鑳藉湪涓葷嚎紼嬩腑浣跨敤銆俀CoreApplication::exec()蹇呴』鍦ㄨ繖涓嚎紼嬩腑璋冪敤銆?br />
鍦ㄥ疄闄呭簲鐢ㄤ腑錛屾渶濂界殑鏂瑰紡鏄妸鑰楁椂鐨勮綆楁斁鍒頒富綰跨▼涓榪涜錛屽畬鎴愬悗閫氱煡涓葷嚎紼嬫樉紺虹粨鏋溿?br />Pre-Thread Event寰幆
姣?涓嚎紼嬮兘鍙互鏈夊畠鑷繁鐨勪簨浠跺驚鐜傚垵濮嬬殑綰跨▼浣跨敤QCoreApplication::exec()鏉ュ紑濮嬪畠鐨勪簨浠跺驚鐜紱鍏跺畠鐨勭嚎紼嬪彲浠ヤ嬌鐢?QThread::exec()鏉ュ惎鍔ㄥ驚鐜傚氨鍍廞CoreApplication錛孮Thread涔熸彁渚涗簡涓涓猠xit(int)鏂規(guī)硶鍜屼竴涓?quit()妲姐?br />
綰跨▼涓殑浜嬩歡寰幆浣垮緱鍦ㄧ嚎紼嬩腑浣跨敤渚濋潬娑堟伅寰幆鐨勯潪GUI鐨凲T綾繪垚涓哄彲鑳斤紙姣斿QTimer,QTcpSocket,QProcess錛夈傚畠涔熶嬌寰椾粠浠諱綍綰跨▼榪炴帴淇″彿鍒頒竴涓嚎紼嬬殑妲芥垚涓哄彲鑳姐傝繖鍦ㄤ笅闈㈢殑“淇″彿鍜屾Ы絀胯秺綰跨▼”涓鑺備腑鏈夎緇嗚В閲娿?br />
涓涓猀Object瀹炰緥鍦ㄩ偅涓嚎紼嬩腑鍒涘緩錛屽氨鍙仛“媧?#8221;鍦ㄩ偅涓嚎紼嬩腑銆傜粰榪欎釜瀵硅薄鐨勪簨浠朵滑閫氳繃綰跨▼鐨勪簨浠跺驚鐜淳鍙戙備竴涓猀Object瀵硅薄鎵“媧誨湪”鐨勭嚎紼嬮氳繃QObject::thread()鍙互鍙栧緱銆?br />
娉?鎰忓湪QApplication涔嬪墠鍒涘緩鐨凲Object璋冪敤QObject::thread()浼?xì)杩斿?.榪欐剰鍛崇潃涓葷嚎紼嬪皢鍙負(fù)榪欎簺瀵硅薄澶勭悊閭瘎鐨勪簨浠訛紱 瀵逛簬娌℃湁綰跨▼鐨勫璞★紝鍏跺畠鐨勪簨浠跺鐞嗚窡鏈笉浼?xì)鍙戠敓銆備嬌鐢≦Object::moveToThread()鏂規(guī)硶鏉ユ敼鍙樺璞★紙鍜屽畠鍎垮瓙浠級(jí)鐨勭嚎紼嬶紙濡傛灉涓涓 璞℃湁鐖癸紝瀹冨氨涓嶈兘琚Щ鍔ㄥ埌鍙﹀綰跨▼錛夈?br />
鍦ㄦ嫢鏈夊璞′箣澶栫殑綰跨▼涓皟鐢ㄥ垹闄ゅ璞℃槸涓嶅畨鍏ㄧ殑錛岄櫎闈炰綘鑳戒繚璇佸湪琚垹闄ゆ椂涓嶅湪澶勭悊浜嬩歡銆備絾鍙互浣跨敤 QObject::deleteLater()錛屽畠浼?xì)瀵勫嚭DeferedDelete浜嬩歡錛屽璞$殑綰跨▼鐨勪簨浠跺驚鐜渶緇堜細(xì)鎶撲綇瀹冦傞粯璁や笅錛屾嫢鏈?Qobject鐨勭嚎紼嬪氨鏄垱寤篞Object鐨勭嚎紼嬶紝浣嗗湪QObject::moveToTread()涔嬪悗灝卞彉浜嗐?br />
濡傛灉娌℃湁浜嬩歡寰幆錛屼簨浠跺皢涓嶈兘浼犵粰瀵硅薄銆傛瘮濡傦紝濡傛灉浣犲湪涓涓嚎紼嬩腑鍒涘緩涓涓猀Timer瀵硅薄錛屼絾鏄病鏈夊啀璋冪敤exec()錛岄偅涔圦Timer灝嗘案涓嶈兘瑙﹀彂timeout()淇″彿銆俤eleteLater()涔熶笉鍐嶈兘宸ヤ綔銆傦紙榪欎簺涔熷悓鏍烽傜敤浜庝富綰跨▼銆傦級(jí)
浣犲彲浠ュ湪浠諱綍綰跨▼涓嬌鐢≦CoreApp:postEvent()鎵嬪姩鍚戜換浣曞璞¢偖瀵勪簨浠躲備簨浠跺皢琚璞℃墍鍦ㄧ嚎紼嬬殑浜嬩歡寰幆鑷姩媧懼彂銆?br />
浜?浠惰繃婊ゅ櫒琚墍鏈夌殑綰跨▼鎵鏀寔錛屼絾鏈変釜闄愬埗鏉′歡錛氱洃瑙嗗璞″繀欏諱笌琚洃瑙嗗璞′綅浜庡悓涓涓嚎紼嬩腑銆傚悓鏍?鐨勶紝QCoreApplication::sendEvent()錛堜笉鍚屼簬 QCoreApplication::postEvent()錛夊彧鑳藉湪鍚屼竴綰跨▼涓殑瀵硅薄涔嬮棿鍙戦佷簨浠躲?br />浠庡彟澶栫嚎紼嬭闂甉Object瀛愮被
QObject鍜屽畠鎵鏈夌殑瀛愮被閮戒笉鏄嚎紼嬪畨鍏ㄧ殑錛岃繖涔熷寘鍚暣涓簨浠舵淳閫佺郴緇熴傝璁頒綇錛屽綋浣犱粠鍙﹀綰跨▼璁塊棶瀵硅薄鏃訛紝浜嬩歡寰幆鍙兘媧鵑佷簨浠跺埌浣犵殑QObject瀛愮被銆?br />
濡傛灉浣犺皟鐢ㄤ竴涓潪鏈嚎紼嬬殑QObject鐨勫瓙綾葷殑鍑芥暟騫朵笖榪欎釜瀵硅薄鍙兘鎺ユ敹浜嬩歡錛屼綘蹇呴』鐢╩utex淇濇姢鎵鏈夊浣犵殑QObject瀛愮被鐨勫唴閮ㄦ暟鎹殑璁塊棶錛涘惁鍒欙紝浣犲彲鑳戒綋楠岀殑浠涔堝彨宕╂簝銆?br />
灝卞儚鍏跺畠瀵硅薄錛孮Thread瀵硅薄“媧?#8221;鍦ㄥ垱寤哄畠鐨勭嚎紼嬩腑錛岃屼笉鏄畠鑷繁鎵浠h〃鐨勭嚎紼嬩腑銆傞氬父鍦ㄤ綘鐨凲Thread瀛愮被涓彁渚涙Ы鏄笉瀹夊叏鐨勶紝闄ら潪浣犵敤mutex淇濇姢鎴愬憳鍙橀噺銆?br />
鍙︿竴鏂歸潰錛屼綘鍙互浠庝綘鐨凲Thread tun()涓畨鍏ㄧ殑鍙戝嚭淇″彿錛屽洜涓轟俊鍙峰彂灝勬槸綰跨▼瀹夊叏鐨勩?br />絀胯秺綰跨▼鐨勪俊鍙峰拰妲戒滑
Qt鏀寔濡備笅淇″彿錛嶆Ы榪炴帴綾誨瀷錛?br />銆鑷姩榪炴帴錛堥粯璁わ級(jí)錛嶃濡傛灉淇″彿鏄粠鎺ユ敹瀵硅薄鎵鍦ㄧ殑綰跨▼鍙戝嚭鐨勶紝鍏惰涓轟笌“鐩存帴榪炴帴”鐩稿悓銆傚惁鍒欙紝鍏惰涓轟笌“闃熷垪榪炴帴”鐩稿悓銆?br />銆鐩存帴榪炴帴錛嶃褰撲俊鍙峰彂鍑猴紝妲戒細(xì)琚珛椹皟鐢ㄣ傛妲藉湪鍙戝嚭鑰呯殑綰跨▼涓墽琛岋紝鑰屼笉涓瀹氭槸鎺ユ敹鑰呮墍鍦ㄧ殑綰跨▼銆?br />銆闃熷垪榪炴帴錛嶃褰撴帶鍒惰繑鍥炲埌鎺ユ敹鑰呮墍鍦ㄧ嚎紼嬬殑浜嬩歡寰幆鏃惰皟鐢ㄣ傛Ы鍦ㄦ帴鏀惰呯殑綰跨▼涓墽琛屻?br />銆闃誨鐨勯槦鍒楄繛鎺ワ紞銆妲藉儚“闃熷垪榪炴帴”閭f牱琚皟鐢紝闄や簡涓鐐癸細(xì)褰撳墠綰跨▼浼?xì)闃诲浣忕洿鍒版Ы杩斿洖銆傛敞錛氬湪鍚屼竴綰跨▼涓嬌鐢ㄦ綾誨瀷鐨勮繛鎺ュ皢瀵艱嚧姝婚攣錛?br />銆鍞竴榪炴帴錛嶃琛屼負(fù)涓?#8220;鑷姩榪炴帴”鐩稿悓錛屼絾榪炴帴蹇呴』鍦ㄦ棤澶嶅埗鍝佹椂鎵嶈兘寤虹珛銆備篃灝辨槸錛屽鏋滃湪鐩稿悓鐨勪袱涓璞′箣闂村凡緇忓緩绔嬩簡鍚屼竴涓俊鍙峰埌鍚屼竴涓Ы鐨勮繛鎺ワ紝閭d箞榪炴帴灝變笉鑳藉緩绔嬶紝connect()榪斿洖false銆?br />
榪炴帴綾誨瀷鍙互閫氳繃緇檆onnect()浼犻掍竴涓澶栫殑鍙傛暟鏉ユ寚瀹氥傛敞鎰忓綋鎺ユ敹鑰呭拰鍙戦佽呬綅浜庝笉鍚岀殑綰跨▼涓椂錛屼嬌鐢?#8220;鐩存帴榪炴帴”錛屽鏋滀簨浠跺驚鐜槸榪愯浜庢帴鏀惰呯殑綰跨▼涓紝姝ゆ椂鏄笉瀹夊叏鐨勶紝鍚岀悊璋冪敤浣嶄簬鍙﹀綰跨▼鐨勫璞$殑浠諱綍鍑芥暟閮芥槸涓嶅畨鍏ㄧ殑銆?br />
QObject::connect()鏈韓鏄嚎紼嬪畨鍏ㄧ殑銆?/div>
]]>
璁╂垜浠湅涓涓嬩嬌鐢≦SequentialAnimatoinGroup鍜孮ParallelAnimationGroup鐨勪唬鐮佺ず渚嬨?br />QPushButton *bonnie = new QPushButton("Bonnie");
bonnie->show();
QPushButton *clyde = new QPushButton("Clyde");
clyde->show();
QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
// Set up anim1
QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry");
// Set up anim2
QParallelAnimationGroup *group = new QParallelAnimationGroup;
group->addAnimation(anim1);
group->addAnimation(anim2);
group->start();
涓涓茍琛実roup鍦ㄥ悓涓鏃跺埢鎾斁澶氫釜鍔ㄧ敾銆傚start()鐨勮皟鐢ㄥ皢鍚姩瀹冩墍緇熸不鐨勬墍鏈夌殑鍔ㄧ敾銆?br />
QPushButton button("Animated Button");
button.show();
QPropertyAnimation anim1(&button, "geometry");
anim1.setDuration(3000);
anim1.setStartValue(QRect(0, 0, 100, 30));
anim1.setEndValue(QRect(500, 500, 100, 30));
QPropertyAnimation anim2(&button, "geometry");
anim2.setDuration(3000);
anim2.setStartValue(QRect(500, 500, 100, 30));
anim2.setEndValue(QRect(1000, 500, 100, 30));
QSequentialAnimationGroup group;
group.addAnimation(&anim1);
group.addAnimation(&anim2);
group.start();
QsequentialAnimationGroup欏哄簭鐨勬挱鏀懼畠鐨勫姩鐢諱滑銆傚畠鍦ㄤ笂涓涓畬鎴愭椂鎸夐『搴忔挱鏀句笅涓涓?br />
褰?浣跨敤鐘舵佹満錛屾垜浠彲浠ヤ嬌鐢ㄤ竴涓猀SignalTransition鎴朡EventTransition綾誨湪鐘舵佽漿鎹㈡椂榪炴帴涓涓垨澶氫釜鍔ㄧ敾銆傝繖浜涚被閮芥槸浠?QAbstractTransition媧劇敓鐨勶紝瀹冧滑瀹氫箟浜嗙畝鏄撶殑鍑芥暟addAnimation()錛屼嬌寰楄兘澶熸坊鍔犱竴涓垨澶氫釜鍔ㄧ敾錛屽湪鐘舵佽漿鎹㈡椂鍚姩榪欎簺 鍔ㄧ敾銆?br />
鎴戜滑榪樺彲鑳借繛鎺ュ睘鎬т笌鐘舵侊紝鑰屼笉鏄墜鍔ㄨ緗紑濮嬩笌緇撴潫鍊箋備笅闈㈡槸瀹屾暣鐨勪唬鐮侊紝婕旂ず浜嗗姩鐢諱竴涓猀PushButton鐨刧eometry灞炴с?br />
QPushButton *button = new QPushButton("Animated Button");
button->show();
QStateMachine *machine = new QStateMachine;
QState *state1 = new QState(machine);
state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
machine->setInitialState(state1);
QState *state2 = new QState(machine);
state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
QSignalTransition *transition1 = state1->addTransition(button,
SIGNAL(clicked()), state2);
transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
QSignalTransition *transition2 = state2->addTransition(button,
SIGNAL(clicked()), state1);
transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
machine->start();
]]>姒傝堪

鍔ㄧ敾妗嗘灦涓殑綾諱滑
鍔ㄧ敾Qt灞炴т滑
浣?涔熸湁鍙兘鍔ㄧ敾涓涓猀Object鐨勫鹼紝铏界劧榪欎簺鍊煎茍娌℃湁琚0鏄庝負(fù)Qt灞炴с傚敮涓鐨勮姹傚氨鏄繖涓煎叿鏈変竴涓猻etter銆備箣鍚庝綘鍙互浠庤繖涓被媧劇敓瀛愮被浠庤屽寘 鍚繖浜涘煎茍涓斿0鏄庝竴涓嬌鐢ㄨ繖涓猻etter鐨勫睘鎬с傛敞鎰忔瘡涓猀t灞炴ч兘闇瑕佹湁涓涓猤etter錛屾墍浠ヤ綘闇瑕佹彁渚涗竴涓猤etter錛屽鏋滃畠涓嶅瓨鍦ㄧ殑璇濄?/p>鍔ㄧ敾鍜屽浘褰㈣鍥炬鏋?/span>
瀹芥澗鏇茬嚎
]]>