锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍦?994騫? Greg Colvin鍚慍++鏍囧噯濮斿憳浼?xì)鎻愬囖Z簡鑷繁璁捐鐨勬櫤鑳芥寚閽堬細(xì)auto_ptr鍜宑ounted_ptr銆俛uto_ptr瀹炵幇鍩烘湰鐨凴AII綆$悊錛屼笉鍙鍒訛紱counted_ptr閲囩敤寮曠敤璁℃暟瀹炵幇浜嗕竴涓彲澶嶅埗鐨勬櫤鑳芥寚閽堛備袱鑰呯敤浜庝笉鍚岀殑鍦哄悎銆?br> 浣嗘槸鏍囧噯濮斿憳浼?xì)鏈緇堝彧閫氳繃浜哸uto_ptr錛屽茍涓斿auto_ptr鍔犲叆浜嗕竴涓彜鎬殑“鎵鏈夋潈杞Щ”璇箟銆傚悗鏉uto_ptr鍜宑ounted_ptr榪涘叆浜咮oost C++ 搴擄紝鏀瑰悕涓簊coped_ptr鍜宻hared_ptr銆?br>
std::auto_ptr鍙墍浠ヨ璁′負(fù)鍙嫹璐濈殑錛屼篃璁告槸鍑轟簬浠ヤ笅鑰冭檻錛屾瘮濡備笅渚嬪嚱鏁幫細(xì)
f1涓殑鍙傛暟鎵鎸囧悜鐨勫璞″簲璇ョ敱璋佹潵鍒犻櫎鍛紵璋冪敤鑰呰繕鏄璋冪敤鑰咃紵濡傛灉涓嶇湅紼嬪簭鏂囨。鐨勮瘽錛屾棤娉曠煡閬撹繖涓鐐廣俧2鍑芥暟涔熷瓨鍦ㄥ悓鏍風(fēng)殑闂銆?br>
鐢╝uto_ptr鍙互娑堥櫎榪欑姝т箟鎬э細(xì)
灝界濡傛錛宎uto_ptr鐨?#8220;鎵鏈夋潈杞Щ”璇箟榪樻槸浼?xì)甯︽潵鍓綔鐢ㄥQ屽洜涓轟細(xì)淇敼鍘熷肩殑甯擱噺鎷瘋礉榪濊儗浜嗕竴鑸殑璁捐鍘熷垯錛屽畠涔熻浼?xì)鍦ㄤ綘鎰忔兂涓嶅埌鐨勬儏鍐典笅灏辨妸瀵硅薄铦{縐諱簡銆傚畠涔熶笉鑳界敤浜庢爣鍑嗗鍣ㄤ腑銆?br> 鎵浠uto_ptr鍦ㄦ柊鐨勬爣鍑嗗簱宸茬粡涓嶅啀鎺ㄨ崘浣跨敤銆傚彇鑰屼唬涔嬬殑鏄痷nique_ptr銆倁nique_ptr涓巃uto_ptr綾諱技錛屼絾闄愬埗浜哸uto_ptr鐨勬嫹璐濊涓恒傚悓鏃訛紝鍍忎笂闈婦鐨勪緥瀛愪竴鏍鳳紝unique_ptr鍙互浣滀負(fù)鍑芥暟鐨勫弬鏁板拰榪斿洖鍊間嬌鐢ㄣ傝繖鏄洜涓篊++澧炲姞浜嗕竴涓柊鐨勭壒寰侊細(xì)鍙沖煎紩鐢ㄣ?br>
shared_ptr涔熻繘鍏ヤ簡鏍囧噯搴撱傚浜庡紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡鑰岃█錛屽驚鐜紩鐢ㄦ槸涓涓ぇ闂銆傛爣鍑嗗簱涓烘鎶妔hared_ptr瀹氫箟涓哄己寮曠敤鎸囬拡錛屽畠榪樺疄鐜頒簡涓涓急寮曠敤鎸囬拡weak_ptr銆傛樉鐒訛紝鏍囧噯搴撳茍娌℃湁浠庢牴鏈笂瑙e喅寰幆寮曠敤鐨勯棶棰橈紝瀹冩妸榪欎釜闂浜ょ粰浜嗙▼搴忓憳銆傚湪涓涓畝鍗曠殑緋葷粺涓紝浣犲彲浠ュ尯鍒嗕嬌鐢╯hared_ptr鍜寃eak_ptr錛屼互姝ゆ潵閬垮厤鍑虹幇寰幆寮曠敤銆備絾鏄湪涓涓ぇ鐨勫璞$郴緇熶腑錛屾湁鏃惰繕鏄鏄撳嚭閿欍傚驚鐜紩鐢ㄧ殑闂錛屼弗閲嶅噺寮變簡shared_ptr鐨勫彲鐢ㄦс?br>
閭d箞鑳戒笉鑳借嚜鍔ㄦ嫻嬫槸鍚﹀嚭鐜板驚鐜紩鐢ㄥ憿錛熶簨瀹炰笂錛屽浜巗hared_ptr榪欑浣跨敤闈炰鏡鍏ュ紡絳栫暐瀹炵幇鐨勬櫤鑳芥寚閽堬紝鏄緢闅懼疄鐜拌嚜鍔ㄦ嫻嬬殑銆備絾鏄鏋滈噰鐢ㄤ鏡鍏ュ紡璁捐錛屾垜浠彲浠ュ紩鍏ヤ竴浜涙帴鍙o紝鏉ヨВ鍐寵繖涓棶棰樸傚驚鐜紩鐢ㄧ殑媯嫻嬶紝瀹為檯涓婃槸鍥捐涓殑鍥炶礬媯嫻嬮棶棰樸?br>
鏈枃鐢?a style="FONT-SIZE: 12pt" title="eXile" href="http://www.shnenglu.com/eXile/">eXile 鍘熷垱錛岃漿杞借琛ㄦ槑鍘熻創(chuàng)鍦板潃銆?nbsp;http://www.shnenglu.com/eXile/銆?/p>
Google C++ Testing Framework Primer
緲昏瘧錛?a target="_blank">Ray Li (ray.leex@gmail.com)
淇敼鏃ユ湡錛?008騫?鏈?鏃?br>鍘熸枃鍙傝錛?a >http://code.google.com/p/googletest/wiki/GoogleTestPrimer
璇戞枃鍦板潃錛歨ttp://www.javaeye.com/topic/212024
Introduction錛氫負(fù)浠涔堥渶瑕?/strong>Google C++ 嫻嬭瘯妗嗘灦錛?/strong>
Google C++ 嫻嬭瘯妗嗘灦甯姪浣犳洿濂藉湴緙栧啓C(jī)++嫻嬭瘯銆?
鏃犺浣犳槸鍦↙inux錛學(xué)indows錛岃繕鏄疢ac鐜涓嬪伐浣滐紝鍙浣犵紪鍐機(jī)++浠g爜錛?span class="hilite1">Google 嫻嬭瘯妗嗘灦閮藉彲浠ュ府涓婂繖銆?
閭d箞錛屽摢浜涘洜绱犳墠鑳芥瀯鎴愪竴涓ソ鐨勬祴璇曪紵浠ュ強(qiáng)錛?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦鎬庢牱婊¤凍榪欎簺鍥犵礌錛熸垜浠浉淇★細(xì)
鍥犱負(fù)Google C++ 嫻嬭瘯妗嗘灦鍩轟簬钁楀悕鐨剎Unit鏋舵瀯錛屽鏋滀綘涔嬪墠浣跨敤榪嘕Unit鎴朠yUnit鐨勮瘽錛屼綘灝嗕細(xì)鎰熻闈炲父鐔熸?zhèn)夈傚鏋滀綘娌℃湁鎺ヨЕ榪囪繖浜涙祴璇曟鏋訛紝瀹冧篃鍙細(xì)鍗犵敤浣犲ぇ綰?0鍒嗛挓鐨勬椂闂存潵瀛︿範(fàn)鍩烘湰姒傚康鍜屼笂鎵嬨傛墍浠ワ紝璁╂垜浠紑濮嬪惂錛?
Note錛氭湰鏂囧伓灝?dāng)浼?xì)鐢?#8220;Google Test”鏉ヤ唬鎸?#8220;Google C++ 嫻嬭瘯妗嗘灦”銆?
鍩烘湰姒傚康
浣跨敤Google Test鏃訛紝浣犳槸浠庣紪鍐?em>鏂█寮濮嬬殑錛岃屾柇璦鏄竴浜涙鏌ユ潯浠舵槸鍚︿負(fù)鐪熺殑璇彞銆備竴涓柇璦鐨勭粨鏋滃彲鑳芥槸鎴愬姛銆侀潪鑷村懡澶辮觸錛屾垨鑰呰嚧鍛藉け璐ャ傚鏋滀竴涓嚧鍛藉け璐ュ嚭鐜幫紝浠栦細(xì)緇撴潫褰撳墠鐨勫嚱鏁幫紱鍚﹀垯錛岀▼搴忕戶緇甯歌繍琛屻?
嫻嬭瘯浣跨敤鏂█鏉ラ獙璇佽嫻嬩唬鐮佺殑琛屼負(fù)銆傚鏋滀竴涓祴璇曞穿婧冩垨鏄嚭鐜頒竴涓け璐ョ殑鏂█錛岄偅涔堬紝璇ユ祴璇?em>澶辮觸錛涘惁鍒欒嫻嬭瘯鎴愬姛銆?
涓涓祴璇曟渚嬶紙test case錛夊寘鍚簡涓涓垨澶氫釜嫻嬭瘯銆備綘搴旇灝嗚嚜宸辯殑嫻嬭瘯鍒嗗埆褰掔被鍒版祴璇曟渚嬩腑錛屼互鍙嶆槧琚祴浠g爜鐨勭粨鏋勩傚綋嫻嬭瘯妗堜緥涓殑澶氫釜嫻嬭瘯闇瑕佸叡浜氱敤瀵硅薄鍜屽瓙紼嬪簭鏃訛紝浣犲彲浠ユ妸浠栦滑鏀懼埌涓涓祴璇曞浐浠訛紙test fixture錛夌被涓?
涓涓?em>嫻嬭瘯紼嬪簭鍙互鍖呭惈澶氫釜嫻嬭瘯妗堜緥銆?
浠庣紪鍐欏崟涓殑鏂█寮濮嬶紝鍒板垱寤烘祴璇曞拰嫻嬭瘯妗堜緥錛屾垜浠皢浼?xì)浠嬀l嶆庢牱緙栧啓涓涓祴璇曠▼搴忋?
鏂█
Google Test涓殑鏂█鏄竴浜涗笌鍑芥暟璋冪敤鐩鎬技鐨勫畯銆傝嫻嬭瘯涓涓被鎴栧嚱鏁幫紝鎴戜滑闇瑕佸鍏惰涓哄仛鍑烘柇璦銆傚綋涓涓柇璦澶辮觸鏃訛紝Google Test浼?xì)鍦ㄥ睆骞曚笂杈撳國櫙ヤ唬鐮佹墍鍦ㄧ殑婧愭枃浠跺強(qiáng)鍏舵墍鍦ㄧ殑浣嶇疆琛屽彿錛屼互鍙?qiáng)閿欒淇℃伅銆備篃鍙互鍦ㄧ紪鍐欐柇璦鏃訛紝鎻愪緵涓涓嚜瀹氫箟鐨勯敊璇俊鎭紝榪欎釜淇℃伅鍦ㄥけ璐ユ椂浼?xì)琚檮鍔犲?span class="hilite1">Google Test鐨勯敊璇俊鎭箣鍚庛?
鏂█甯稿父鎴愬鍑虹幇錛屽畠浠兘嫻嬭瘯鍚屼竴涓被鎴栬呭嚱鏁幫紝浣嗗褰撳墠鍔熻兘鏈夌潃涓嶅悓鐨勬晥鏋溿侫SSERT_*鐗堟湰鐨勬柇璦澶辮觸鏃朵細(xì)浜х敓鑷村懡澶辮觸錛屽茍緇撴潫褰撳墠鍑芥暟銆侲XPECT_*鐗堟湰鐨勬柇璦浜х敓闈炶嚧鍛藉け璐ワ紝鑰屼笉浼?xì)涓褰撳墠鍑芥暟銆傞氬父鏇存帹鑽愪嬌鐢‥XPECT_*鏂█錛屽洜涓哄畠浠繍琛屼竴涓祴璇曚腑鍙互鏈変笉姝竴涓殑閿欒琚姤鍛婂嚭鏉ャ備絾濡傛灉鍦ㄧ紪鍐欐柇璦濡傛灉澶辮觸錛屽氨娌℃湁蹇呰緇х畫寰涓嬫墽琛岀殑嫻嬭瘯鏃訛紝浣犲簲璇ヤ嬌鐢ˋSSERT_*鏂█銆?
鍥犱負(fù)澶辮觸鐨凙SSERT_*鏂█浼?xì)绔嬪堉M粠褰撳墠鐨勫嚱鏁拌繑鍥烇紝鍙兘浼?xì)锜q囧叾鍚庣殑涓浜涚殑娓呮磥浠g爜錛岃繖鏍蜂篃璁鎬細(xì)瀵艱嚧絀洪棿娉勬紡銆傛牴鎹硠婕忔湰韜殑鐗硅川錛岃繖縐嶆儏鍐? 涔熻鍊煎緱淇錛屼篃鍙兘涓嶅煎緱鎴戜滑鍏沖績鈥斺旀墍浠ワ紝濡傛灉浣犲緱鍒版柇璦閿欒鐨勫悓鏃訛紝榪樺緱鍒頒簡涓涓爢媯鏌ョ殑閿欒錛岃浣忎笂闈㈡垜浠墍璇寸殑榪欎竴鐐廣?
瑕佹彁渚涗竴涓嚜瀹氫箟鐨勯敊璇秷鎭紝鍙渶瑕佷嬌鐢?lt;<鎿嶄綔絎︼紝鎴栦竴涓?lt;<鎿嶄綔絎︾殑搴忓垪錛屽皢鍏惰緭鍏ュ埌妗嗘灦瀹氫箟鐨勫畯涓備笅闈㈡槸涓涓緥瀛愶細(xì)
浠諱綍鑳藉琚緭鍑哄埌ostream涓殑淇℃伅閮藉彲浠ヨ杈撳嚭鍒頒竴涓柇璦瀹忎腑鈥斺旂壒鍒槸C瀛楃涓插拰string瀵硅薄銆傚鏋滀竴涓瀛楃涓? 錛坵char_t*錛寃indows涓奤NICODE妯″紡TCHAR*鎴杝td::wstring錛夎杈撳嚭鍒頒竴涓柇璦涓紝鍦ㄦ墦鍗版椂瀹冧細(xì)琚漿鎹㈡垚UTF-8 緙栫爜銆?
鍩烘湰鏂█
涓嬮潰榪欎簺鏂█瀹炵幇浜嗗熀鏈殑true/false鏉′歡嫻嬭瘯銆?
鑷村懡鏂█ | 闈炶嚧鍛芥柇璦 | 楠岃瘉鏉′歡 |
ASSERT_TRUE(condition); | EXPECT_TRUE(condition); | condition涓虹湡 |
ASSERT_FALSE(condition); | EXPECT_FALSE(condition); | condition 涓哄亣 |
璁頒綇錛屽綋瀹冧滑澶辮觸鏃訛紝ASSERT_*浜х敓涓涓嚧鍛藉け璐ュ茍浠庡綋鍓嶅嚱鏁拌繑鍥烇紝鑰孍XCEPT_*浜х敓涓涓潪鑷村懡澶辮觸錛屽厑璁稿嚱鏁扮戶緇繍琛屻傚湪涓ょ鎯呭喌涓嬶紝涓涓柇璦澶辮觸閮芥剰鍛崇潃瀹冩墍鍖呭惈鐨勬祴璇曞け璐ャ?
鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?
浜岃繘鍒舵瘮杈?/strong>
鏈妭鎻忚堪浜嗘瘮杈冧袱涓肩殑涓浜涙柇璦銆?
鑷村懡鏂█ | 闈炶嚧鍛芥柇璦 | 楠岃瘉鏉′歡 |
ASSERT_EQ(expected, actual); | EXPECT_EQ(expected, actual); | expected == actual |
ASSERT_NE(val1, val2); | EXPECT_NE(val1, val2); | val1 != val2 |
ASSERT_LT(val1, val2); | EXPECT_LT(val1, val2); | val1 < val2 |
ASSERT_LE(val1, val2); | EXPECT_LE(val1, val2); | val1 <= val2 |
ASSERT_GT(val1, val2); | EXPECT_GT(val1, val2); | val1 > val2 |
ASSERT_GE(val1, val2); | EXPECT_GE(val1, val2); | val1 >= val2 |
鍦ㄥ嚭鐜板け璐ヤ簨浠舵椂錛?span class="hilite1">Google Test浼?xì)灏嗕袱涓鹼紙Val1鍜?em>Val2錛夐兘鎵撳嵃鍑烘潵銆傚湪ASSERT_EQ*鍜孍XCEPT_EQ*鏂█錛堜互鍙?qiáng)鎴戜滑闅忓悗浠嬀l嶇被浼肩殑鏂█錛変腑錛屼綘搴旇鎶婁綘甯屾湜嫻嬭瘯鐨勮〃杈懼紡鏀懼湪actual錛堝疄闄呭鹼級鐨勪綅緗笂錛屽皢鍏舵湡鏈涘兼斁鍦?em>expected錛堟湡鏈涘鹼級鐨勪綅緗笂錛屽洜涓?span class="hilite1">Google Test鐨勬祴璇曟秷鎭負(fù)榪欑鎯緥鍋氫簡涓浜涗紭鍖栥?
鍙傛暟鍊煎繀欏繪槸鍙氳繃鏂█鐨勬瘮杈冩搷浣滅榪涜姣旇緝鐨勶紝鍚﹀垯浣犱細(xì)寰楀埌涓涓紪璇戦敊璇傚弬鏁板艱繕蹇呴』鏀寔<<鎿嶄綔絎︽潵灝嗗艱緭鍏ュ埌ostream涓傛墍鏈夌殑C++鍐呯疆綾誨瀷閮芥敮鎸佽繖涓鐐廣?
榪欎簺鏂█鍙互鐢ㄤ簬鐢ㄦ埛鑷畾涔夌殑鍨嬪埆錛屼絾浣犲繀欏婚噸杞界浉搴旂殑姣旇緝鎿嶄綔絎︼紙濡?=銆?lt;絳夛級銆傚鏋滃畾涔夋湁鐩稿簲鐨勬搷浣滅錛屾帹鑽愪嬌鐢ˋSSERT_*()瀹忥紝鍥犱負(fù)瀹冧滑涓嶄粎浼?xì)杈撳嚭姣旇緝鐨劸l撴灉錛岃繕浼?xì)杈撳囖Z袱涓瘮杈冨璞°?
鍙傛暟琛ㄨ揪寮忔繪槸鍙瑙f瀽涓嬈°傚洜姝わ紝鍙傛暟琛ㄨ揪寮忔湁涓瀹氱殑鍓綔鐢紙side effect錛岃繖閲屽簲璇ユ槸鎸囩紪璇戝櫒涓嶅悓錛屾搷浣滅瑙f瀽欏哄簭鐨勪笉紜畾鎬э級涔熸槸鍙互鎺ュ彈鐨勩備絾鏄紝鍚屽叾浠栨櫘閫欳/C++鍑芥暟涓鏍鳳紝鍙傛暟琛ㄨ揪寮忕殑瑙f瀽欏哄簭鏄笉紜畾鐨勶紙濡傦紝涓縐嶇紪璇戝櫒鍙互鑷敱閫夋嫨涓縐嶉『搴忔潵榪涜瑙f瀽錛夛紝鑰屼綘鐨勪唬鐮佷笉搴旇渚濊禆浜庢煇縐嶇壒瀹氱殑鍙傛暟瑙f瀽欏哄簭銆?
ASSERT_EQ()瀵規(guī)寚閽堣繘琛岀殑鏄寚閽堟瘮杈冦傚嵆錛屽鏋滆鐢ㄥ湪涓や釜C瀛楃涓蹭笂錛屽畠浼?xì)姣旇緝瀹冧滑鏄惁鎸囧悜鍚屾狅L(fēng)殑鍐呭瓨鍦板潃錛岃屼笉鏄畠浠墍鎸囧悜鐨勫瓧絎︿覆鏄惁鏈夌浉鍚屽箋傛墍浠ワ紝濡傛灉浣犳兂瀵逛袱涓狢瀛楃涓詫紙渚嬪錛宑onst char*錛夎繘琛屽兼瘮杈冿紝璇蜂嬌鐢ˋSSERT_STREQ()瀹忥紝璇ュ畯浼?xì)鍦ㄥ悗闈粙缁嶅埌銆傜壒鍒渶瑕佷竴鎻愮殑鏄紝瑕侀獙璇佷竴涓狢瀛楃涓叉槸鍚︿負(fù)絀猴紙NULL錛夛紝浣跨敤ASSERT_STREQ(NULL, c_string)銆備絾鏄姣旇緝涓や釜string瀵硅薄鏃訛紝浣犲簲璇ヤ嬌鐢ˋSSERT_EQ銆?
鏈妭涓粙緇嶇殑瀹忛兘鍙互澶勭悊紿勫瓧絎︿覆瀵硅薄鍜屽瀛楃涓插璞★紙string鍜寃string錛夈?
鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?
瀛楃涓叉瘮杈?/strong>
璇ョ粍鏂█鐢ㄤ簬姣旇緝涓や釜C瀛楃涓層傚鏋滀綘鎯寵姣旇緝涓や釜string瀵硅薄錛岀浉搴斿湴浣跨敤EXPECT_EQ銆丒XPECT_NE絳夋柇璦銆?
鑷村懡鏂█ | 闈炶嚧鍛芥柇璦 | 楠岃瘉鏉′歡 |
ASSERT_STREQ(expected_str, actual_str); | EXPECT_STREQ(expected_str, actual_str); | 涓や釜C瀛楃涓叉湁鐩稿悓鐨勫唴瀹?/td> |
ASSERT_STRNE(str1, str2); | EXPECT_STRNE(str1, str2); | 涓や釜C瀛楃涓叉湁涓嶅悓鐨勫唴瀹?/td> |
ASSERT_STRCASEEQ(expected_str, actual_str); | EXPECT_STRCASEEQ(expected_str, actual_str); | 涓や釜C瀛楃涓叉湁鐩稿悓鐨勫唴瀹癸紝蹇界暐澶у皬鍐?/td> |
ASSERT_STRCASENE(str1, str2); | EXPECT_STRCASENE(str1, str2); | 涓や釜C瀛楃涓叉湁涓嶅悓鐨勫唴瀹癸紝蹇界暐澶у皬鍐?/td> |
娉ㄦ剰鏂█鍚嶇О涓嚭鐜扮殑“CASE”鎰忓懗鐫澶у皬鍐欒蹇界暐浜嗐?
*STREQ*鍜?STRNE*涔熸帴鍙楀瀛楃涓詫紙wchar_t*錛夈傚鏋滀袱涓瀛楃涓叉瘮杈冨け璐ワ紝瀹冧滑鐨勫間細(xì)鍋氫負(fù)UTF-8紿勫瓧絎︿覆琚緭鍑恒?
涓涓狽ULL絀烘寚閽堝拰涓涓┖瀛楃涓蹭細(xì)琚涓烘槸涓嶄竴鏍?/em>鐨勩?
鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?
鍙傝錛氭洿澶氱殑瀛楃涓叉瘮杈冪殑鎶宸э紙濡傚瓙瀛楃涓層佸墠緙鍜屾鍒欒〃杈懼紡鍖歸厤錛夛紝璇峰弬瑙乕Advanced Guide Advanced Google Test Guide]銆?
綆鍗曠殑嫻嬭瘯
瑕佸垱寤轟竴涓祴璇曪細(xì)
TEST錛堬級鐨勫弬鏁版槸浠庢鎷埌鐗規(guī)畩鐨勩?em>絎竴涓?/em>鍙傛暟鏄祴璇曟渚嬬殑鍚嶇О錛?em>絎簩涓?/em>鍙傛暟鏄祴璇曟渚嬩腑鐨勬祴璇曠殑鍚嶇О銆傝浣忥紝涓涓祴璇曟渚嬪彲浠ュ寘鍚換鎰忔暟閲忕殑鐙珛嫻嬭瘯銆備竴涓祴璇曠殑鍏ㄧО鍖呮嫭浜嗗寘鍚畠鐨勬祴璇曟渚嬪悕縐幫紝鍙?qiáng)鍏剁嫭绔嬬殑鍚嵖U般備笉鍚屾祴璇曟渚嬩腑鐨勭嫭绔嬫祴璇曞彲浠ユ湁鐩稿悓鐨勫悕縐般?
涓句緥鏉ヨ錛岃鎴戜滑鐪嬩竴涓畝鍗曠殑鏁存暟鍑芥暟錛?
浣滆匨atthias Ettrich錛岃瘧鑰匞oogol Lee錛屽師鏂囧湴鍧鍦?a >榪欓噷銆?
鍦ㄥ瓚o紙Trolltech錛夛紝涓轟簡鏀硅繘Qt鐨勫紑鍙戜綋楠岋紝鎴戜滑鍋氫簡澶ч噺鐨勭爺絀躲傝繖綃囨枃绔犻噷錛屾垜鎵撶畻鍒嗕韓涓浜涙垜浠殑鍙戠幇錛屼互鍙?qiáng)涓浜涙垜浠湪璁捐Qt4鏃剁敤鍒扮殑鍘熷垯錛屽茍涓斿睍紺哄浣曟妸榪欎簺鍘熷垯搴旂敤鍒頒綘鐨勪唬鐮侀噷銆?
璁捐搴旂敤紼嬪簭鎺ュ彛錛孉PI錛屾槸寰堥毦鐨勩傝繖鏄竴闂ㄥ拰璁捐璇█鍚屾牱闅劇殑鑹烘湳銆傝繖閲屽彲浠ラ夋嫨澶鐨勫師鍒欙紝鐢氳嚦鏈夊緢澶氬師鍒欏拰鍏朵粬鍘熷垯鏈夌煕鐩俱?
鐜板湪錛岃綆楁満縐戝鏁欒偛鎶婂緢澶х殑鍔涙皵鏀懼湪綆楁硶鍜屾暟鎹粨鏋勪笂錛岃屽緢灝戝叧娉ㄨ璁¤璦鍜屾鏋惰儗鍚庣殑鍘熷垯銆傝繖璁╁簲鐢ㄧ▼搴忓憳瀹屽叏娌℃湁鍑嗗鍘婚潰瀵硅秺鏉ヨ秺閲嶈鐨勪換鍔★細(xì)鍒涢犲彲閲嶇敤鐨勭粍浠躲?
鍦ㄩ潰鍚戝璞¤璦鏅強(qiáng)涔嬪墠錛屽彲閲嶇敤鐨勯氱敤浠g爜澶ч儴鍒嗘槸鐢卞簱鎻愪緵鑰呭啓鐨勶紝鑰屼笉鏄簲鐢ㄧ▼搴忓憳銆傚湪Qt鐨勪笘鐣岄噷錛岃繖縐嶇姸鍐墊湁浜嗘槑鏄劇殑鏀瑰杽銆傚湪浠諱綍鏃跺欙紝鐢≦t緙栫▼灝辨槸鍐欐柊鐨勭粍浠躲備竴涓吀鍨嬬殑Qt搴旂敤紼嬪簭鑷沖皯閮戒細(xì)鏈夊嚑涓湪紼嬪簭涓弽澶嶄嬌鐢ㄧ殑鑷畾涔夌粍浠躲備竴鑸潵璇達(dá)紝鍚屾牱鐨勭粍浠朵細(xì)鎴愪負(fù)鍏朵粬搴旂敤紼嬪簭鐨勪竴閮ㄥ垎銆侹DE錛孠妗岄潰鐜錛岃蛋寰楁洿榪滐紝鐢ㄨ澶氳拷鍔犵殑搴撴潵鎵╁睍Qt錛屽疄鐜頒簡鏁扮櫨涓檮鍔犵被銆傦紙涓鑸潵璇達(dá)紝涓涓被灝辨槸涓涓彲閲嶇敤緇勪歡錛屽師鏂囪繖閲屾病鏈夊啓娓呮銆傦級
浣嗘槸錛屼竴涓ソ鐨勶紝楂樻晥鐨凜++ API鏄敱浠涔堢粍鎴愮殑鍛紵鏄ソ榪樻槸鍧忥紝鍙栧喅浜庡緢澶氬洜绱犫斺旀瘮濡傦紝鎵嬪ご鐨勫伐浣滃拰鐗瑰畾鐨勭洰鏍囩兢浣撱傚ソ鐨凙PI鏈夊緢澶氱壒鎬э紝涓浜涚壒鎬ф槸澶у閮芥兂瑕佺殑錛岃屽彟涓浜涘垯鏄拡瀵圭壒瀹氶棶棰樺煙鐨勩?
API鏄潰鍚戠▼搴忓憳鐨勶紝鐢ㄦ潵鎻忚堪鎻愪緵緇欐渶緇堢敤鎴風(fēng)殑GUI鏄粈涔堟牱瀛愩侫PI涓殑P甯﹁〃紼嬪簭鍛橈紙Programmer錛夛紝鑰屼笉鏄▼搴忥紙Program錛夛紝鐢ㄦ潵寮鴻皟API鏄粰紼嬪簭鍛樼敤鐨勶紝緇欎漢綾葷殑紼嬪簭鍛樼敤鐨勩?
鎴戜滑鍧氫俊API搴旇鏄渶灝忓寲涓斿畬鏁寸殑錛屾嫢鏈夋竻鏅頒笖綆鍗曠殑璇箟錛岀洿瑙夊寲錛屽鏄撹蹇嗭紝騫朵笖寮曞浜哄啓鍑烘槗璇葷殑浠g爜銆?
鏈鍚庯紝璁頒綇錛屼笉鍚岀被鍨嬬殑鐢ㄦ埛浼?xì)鐢ㄥ埌API鐨勪笉鍚岄儴鍒嗐傝櫧鐒剁畝鍗曠殑瀹炰緥鍖栦竴涓猀t綾繪槸闈炲父鐩磋鍖栫殑錛岃璧勬繁涓撳鍦ㄨ瘯鍥懼瓙綾誨寲涔嬪墠璇諱竴閬嶆枃妗o紝鏄緢鍚堢悊鐨勩?
榪欐槸涓父瑙佺殑璇В錛氭洿濂界殑API錛岀敤鏇村皯鐨勪唬鐮佸畬鎴愪竴浠朵簨銆傛案榪滆浣忎唬鐮佷竴嬈″啓灝憋紝涔嬪悗闇瑕佷笉鏂殑闃呰騫剁悊瑙c傛瘮濡傦細(xì)
QSlider *slider = new QSlider(12, 18, 3, 13, Qt::Vertical, 0, "volume");
榪滄瘮涓嬮潰閭f牱闅捐錛堢敋鑷抽毦鍐欙級錛?
QSlider *slider = new QSlider(Qt::Vertical); slider->setRange(12, 18); slider->setPageStep(3); slider->setValue(13); slider->setObjectName("volume");
甯冨皵鍙傛暟閫氬父浼?xì)瀵艰嚧涓嶆槗璇荤殑浠g爜銆傛洿榪涗竴姝ワ紝緇欎竴涓凡緇忓瓨鍦ㄧ殑鍑芥暟鍔犲叆涓涓竷?yōu)當(dāng)鍙傛晭图寴q欏父甯告槸涓敊璇傚湪Qt閲岋紝涓涓紶緇熺殑渚嬪瓙鏄痳epaint()錛岃繖涓嚱鏁板甫鏈変竴涓竷?yōu)當(dāng)鍙傛晭图屾潵鏍囪瘑鏄惁鎿﹂櫎鑳屾櫙锛堥粯璁ゆ摝闄ゅQ夈傝繖璁╀唬鐮侀氬父鍐欐垚錛?
widget->repaint(false);
鍒濆鑰呭緢瀹規(guī)槗鎶婅繖鍙ヨ瘽鐞嗚В鎴?#8220;鍒噸鐢?#8221;錛?
榪欐牱鍋氭槸鑰冭檻鍒板竷?yōu)當(dāng)鍙傛暟鍙互鍑彏畱涓涓嚱鏁幫紝閬垮厤浠g爜鑶ㄨ儉銆備簨瀹炰笂錛岃繖鍙嶈屽鍔犱簡浠g爜閲忋傛湁澶氬皯Qt鐢ㄦ埛鐪熺殑璁頒綇浜嗕笅闈笁琛岀▼搴忛兘鏄仛浠涔堢殑錛?
widget->repaint(); widget->repaint(true); widget->repaint(false);
涓涓ソ涓浜涚殑API鍙兘鐪嬭搗鏉ユ槸榪欐牱錛?
widget->repaint(); widget->repaintWithoutErasing();
鍦≦t4閲岋紝鎴戜滑閲嶆柊璁捐浜唚idget錛屼嬌寰楃敤鎴蜂笉鍐嶉渶瑕佷笉閲嶇敾鑳屾櫙鐨勯噸鐢粀idget錛屾潵瑙e喅榪欎釜闂銆俀t4鍘熺敓鏀寔鍙岀紦瀛橈紝搴熸帀浜嗚繖涓壒鎬с?
榪欓噷榪樻湁涓浜涗緥瀛愶細(xì)
widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding, true); textEdit->insert("Where's Waldo?", true, true, false); QRegExp rx("moc_*.c??", false, true);
涓涓樉鑰屾槗瑙佺殑瑙e喅鏂規(guī)硶鏄紝浣跨敤鏋氫婦綾誨瀷浠f浛甯冨皵鍙傛暟銆傝繖姝f槸鎴戜滑鍦≦t4涓?a >QString澶у皬鍐欐晱鎰熸椂鐨勫鐞嗘柟娉曘傛瘮杈冿細(xì)
str.replace("%USER%", user, false); // Qt 3 str.replace("%USER%", user, Qt::CaseInsensitive); // Qt 4
鐩鎬技鐨勭被搴旇鍚湁鐩鎬技鐨凙PI銆傚湪蹇呰鐨勬椂鍊欌斺斿氨鏄錛岄渶瑕佷嬌鐢ㄨ繍琛屾椂澶氭佺殑鏃跺欌斺旇繖鍙互閫氳繃緇ф壙瀹炵幇銆備絾鏄鎬佷緷鏃т細(xì)鍙戠敓鍦ㄨ璁℃椂鏈熴傛瘮濡傦紝濡傛灉浣犵敤QListBox浠f浛QComboBox錛屾垨鑰呯敤QSlider浠f浛QSpinBox錛屼綘浼?xì)鍙戠幇鐩镐技鐨凙PI浣胯繖縐嶆浛鎹㈤潪甯稿鏄撱傝繖灝辨槸鎴戜滑鎵璇寸殑“闈欐佸鎬?#8221;銆?
闈欐佸鎬佷篃浣緼PI鍜岀▼搴忔ā寮忔洿瀹規(guī)槗璁板繂銆備綔涓虹粨璁猴紝涓緇勭浉鍏崇被浣跨敤鐩鎬技鐨凙PI錛屾湁鏃惰姣旂粰姣忎釜綾繪彁渚涘畬緹庣殑鍗曠嫭API錛岃濂姐?
錛堣瘧娉細(xì)C++ 0x灝嗚寮曞叆鐨刢oncept錛屽氨鏄潤鎬佸鎬佺殑璇硶灞傚疄鐜般傝繖涓姣斿崟鐙殑鍑芥暟鍚嶇浉浼兼洿寮哄ぇ涓旀槗鐢ㄣ傦級
鍛藉悕錛屽ぇ姒傛槸璁捐API鏃跺敮涓鏈閲嶈鐨勯棶棰樹簡銆傝鎬庝箞縐板懠榪欎釜綾伙紵鎴愬憳鍑芥暟璇ュ彨浠涔堬紵
涓浜涜鍒欓氬父瀵規(guī)墍鏈夊悕瀛楅兘鏄湁鐢ㄧ殑銆傞鍏堬紝灝卞儚鎴戜箣鍓嶆彁鍒扮殑錛屽埆鐢ㄧ緝鍐欍傜敋鑷沖緢鏄庢樉鐨勭緝鍐欙紝姣斿“prev”琛ㄧず“previous”浠庨暱榪滅湅涔熸槸涓嶅垝綆楃殑錛屽洜涓虹敤鎴峰繀欏昏浣忓摢浜涜瘝鏄緝鍐欍?
濡傛灉API鏈韓涓嶄竴鑷達(dá)紝浜嬫儏鑷劧浼?xì)鍙樺緱寰埦p熺硶錛屾瘮濡傦紝 Qt3鏈塧ctivatePreviousWindow()鍜宖etchPrev()銆傚潥鎸?#8220;娌℃湁緙╁啓”鐨勮鍒欐洿瀹規(guī)槗鍒涘緩涓鑷寸殑API銆?
鍙︿竴涓噸瑕佷絾鏇村姞寰鐨勮鍒欐槸錛屽湪璁捐綾葷殑鏃跺欙紝蹇呴』灝藉姏淇濊瘉瀛愮被鍛藉悕絀洪棿鐨勫共鍑銆傚湪Qt3閲岋紝娌℃湁寰堝ソ鐨勯伒瀹堣繖涓鍒欍傛瘮濡傦紝鎷?a >QToolButton鏉ヤ婦渚嬨傚鏋滀綘鍦≦t3閲岋紝瀵逛竴涓?a >QToolButton璋冪敤name()銆乧aption()銆乼ext()鎴栬卼extLabel()錛屼綘甯屾湜鍋氫粈涔堝憿錛熶綘鍙互鍦≦t Designer閲屾嬁QToolButton璇曡瘯錛?
鐢變簬瀵瑰彲璇繪х殑鍏蟲敞錛宯ame鍦≦t4閲岃縐頒綔objectName錛宑aption鍙樻垚浜唚indowsTitle錛岃屽湪QToolButton閲屼笉鍐嶆湁鍗曠嫭鐨則extLabel灞炴с?
鏍囪瘑涓緇勭被鑰屼笉鏄崟鐙粰姣忎釜綾繪壘涓伆褰撶殑鍚嶅瓧銆傛瘮濡傦紝Qt4閲屾墍鏈夋ā寮忔劅鐭ラ」鐩殑瑙嗗浘綾伙紙model-aware item view classes錛夐兘鎷ユ湁-View鐨勫悗緙錛?a >QListView銆?a >QTableView鍜?a >QTreeView錛夛紝騫朵笖瀵瑰簲鍩轟簬欏圭洰鐨勭被閮界敤鍚庣紑-Widget浠f浛錛?a >QListWidget銆?a >QTableWidget鍜?a >QTreeWidget錛夈?
褰撳0鏄庢灇涓炬椂錛屾椂鍒昏浣忥紝鍦–++錛堜笉鍍廕ava鍜孋#錛変腑錛屼嬌鐢ㄦ灇涓懼間笉闇瑕佺被鍨嬩俊鎭備笅闈㈢殑渚嬪瓙婕旂ず浜嗙粰鏋氫婦鍊艱搗涓お榪囧父鐢ㄧ殑鍚嶅瓧鎵寮曡搗鐨勫嵄瀹籌細(xì)
namespace Qt { enum Corner { TopLeft, BottomRight, ... }; enum CaseSensitivity { Insensitive, Sensitive }; ... }; tabWidget->setCornerWidget(widget, Qt::TopLeft); str.indexOf("$(QTDIR)", Qt::Insensitive);
鍦ㄦ渶鍚庝竴琛岋紝Insensitive鏄粈涔堟剰鎬濓紵涓涓敤浜庡懡鍚嶆灇涓懼肩殑鎸囧鎬濇兂鏄紝鍦ㄦ瘡涓灇涓懼奸噷錛岃嚦灝戦噸澶嶄竴涓灇涓劇被鍨嬪悕涓殑鍏冪礌錛?
namespace Qt { enum Corner { TopLeftCorner, BottomRightCorner, ... }; enum CaseSensitivity { CaseInsensitive, CaseSensitive }; ... }; tabWidget->setCornerWidget(widget, Qt::TopLeftCorner); str.indexOf("$(QTDIR)", Qt::CaseInsensitive);
褰撴灇涓懼煎彲浠ョ敤“鎴?#8221;榪炴帴璧鋒潵褰撲綔涓涓爣蹇楁椂錛屼紶緇熺殑鍋氭硶鏄皢“鎴?#8221;鐨勭粨鏋滀綔涓轟竴涓猧nt淇濆瓨錛岃繖涓嶆槸綾誨瀷瀹夊叏鐨勩俀t4鎻愪緵浜嗕竴涓ā鏉跨被 QFlags<T>鏉ュ疄鐜扮被鍨嬪畨鍏紝鍏朵腑T鏄釜鏋氫婦綾誨瀷銆備負(fù)浜嗘柟渚夸嬌鐢紝Qt涓哄緢澶氭爣蹇楃被鍚嶆彁渚涗簡typedef錛屾墍浠ヤ綘鍙互浣跨敤綾誨瀷 Qt::Alignment浠f浛QFlags<Qt::AlignmentFlag>銆?
涓轟簡鏂逛究錛屾垜浠粰鏋氫婦綾誨瀷鍗曟暟鐨勫悕瀛楋紙榪欐牱琛ㄧず鏋氫婦鍊間竴嬈″彧鑳芥湁涓涓爣蹇楋級錛岃?#8220;鏍囧織”鍒欎嬌鐢ㄥ鏁板悕瀛椼傛瘮濡傦細(xì)
enum RectangleEdge { LeftEdge, RightEdge, ... }; typedef QFlags<RectangleEdge> RectangleEdges;
鏈変簺鎯呭喌涓嬶紝“鏍囧織“綾諱嬌鐢ㄤ簡鍗曟暟鐨勫悕瀛椼傝繖鏃訛紝鏋氫婦綾諱嬌鐢?Flag鍋氬悗緙錛?
enum AlignmentFlag { AlignLeft, AlignTop, ... }; typedef QFlags<AlignmentFlag> Alignment;
錛堣繖閲屼負(fù)鍟ヤ笉鏄妸”鏍囧織“綾葷敤-Flag鍋氬悗緙錛岃屾槸鎶婃灇涓懼煎仛鍚庣紑鍛紵鎰熻鏈夌偣娣鋒穯……錛?
緇欏嚱鏁板懡鍚嶇殑涓涓鍒欐槸錛屽悕瀛楄鏄庣‘浣撶幇鍑鴻繖涓嚱鏁版槸鍚︽湁鍓綔鐢ㄣ傚湪Qt3錛屽父鏁板嚱鏁?a >QString::simplifyWhiteSpace()榪濆弽浜嗚繖涓師鍒欙紝鍥犱負(fù)瀹冭繑鍥炵被涓涓?a >QString瀹炰緥錛岃屼笉鏄儚鍚嶅瓧鎵鎻愮ず鐨勯偅鏍鳳紝鏇存敼浜嗚皟鐢ㄨ繖涓嚱鏁扮殑瀹炰緥鏈韓銆傚湪Qt4錛岃繖涓嚱鏁拌閲嶅懡鍚嶄負(fù)QString::simplified()銆?
鍙傛暟鍚嶆槸紼嬪簭鍛樼殑閲嶈淇℃伅鏉ユ簮錛岃櫧鐒跺湪浣跨敤API鏃訛紝騫朵笉鐩存帴灞曠ず鍦ㄤ唬鐮侀噷銆傜敱浜庣幇浠DE鍦ㄧ▼搴忓憳鍐欎唬鐮佹椂鍙互鑷姩鏄劇ず鍙傛暟鍚嶏紙灝辨槸鑷姩鎰熺煡鎴栬呰嚜鍔ㄨˉ鍏ㄤ箣綾葷殑鍔熻兘錛夛紝鍊煎緱鑺辨椂闂寸粰澶存枃浠墮噷澹版槑鐨勫弬鏁頒竴涓悎閫傜殑鍚嶅瓧錛屽茍涓斿湪鏂囨。涓篃浣跨敤鐩稿悓鐨勫悕瀛椼?
緇欏竷?yōu)當(dāng)灞炴х殑璁劇疆鍑芥暟鍜屾彁鍙栧嚱鏁頒竴涓悎閫傜殑鍚嶅瓧錛屾繪槸闈炲父鐥涜嫤鐨勩傛彁鍙栧嚱鏁板簲璇ュ彨鍋歝hecked()榪樻槸isChecked()錛焥crollBarsEnabled()榪樻槸areScrollBarEnabled()?
鍦≦t4閲岋紝鎴戜滑浣跨敤涓嬪垪瑙勫垯鍛藉悕鎻愬彇鍑芥暟錛?
璁劇疆鍑芥暟鍚嶅瓧緇ф壙鑷彁鍙栧嚱鏁板悕錛屽彧鏄Щ鎺変簡鎵鏈夊墠緙錛屽茍浣跨敤set-鍋氬墠緙錛屾瘮濡傦細(xì)setDown()榪樻湁setScrollBarsEnabled()銆傚睘鎬х殑鍚嶅瓧涓庢彁鍙栧嚱鏁扮浉鍚岋紝鍙槸鍘繪帀浜嗗墠緙銆?
浼犲嚭鍙傛暟鐨勬渶浣抽夋嫨鏄粈涔堬紝鎸囬拡榪樻槸寮曠敤錛?
void getHsv(int *h, int *s, int *v) const void getHsv(int &h, int &s, int &v) const
澶ч儴鍒咰++涔︽帹鑽愬湪鑳界敤寮曠敤鐨勫湴鏂瑰氨鐢ㄥ紩鐢紝榪欐槸鍥犱負(fù)涓鑸涓哄紩鐢ㄦ瘮鎸囬拡鏇?#8220;瀹夊叏涓斿ソ鐢?#8221;銆傜劧鑰岋紝鍦ㄥ瓚o紙Trolltech錛夛紝鎴戜滑鍊懼悜浣跨敤鎸囬拡錛屽洜涓鴻繖璁╀唬鐮佹洿鏄撹銆傛瘮杈冿細(xì)
color.getHsv(&h, &s, &v); color.getHsv(h, s, v);
鍙湁絎竴琛岃兘娓呮鐨勮鏄庯紝鍦ㄥ嚱鏁拌皟鐢ㄥ悗錛宧銆乻鍜寁灝嗘湁寰堝ぇ鍑犵巼琚敼鍔ㄣ?
涓轟簡灞曠ず濡備綍瀹為檯搴旂敤榪欎簺姒傚康錛屾垜浠皢瀛︿範(fàn)Qt3涓殑API QProgressBar騫跺拰Qt4閲岀浉閫氱殑API鍋氭瘮杈冦傚湪Qt3閲岋細(xì)
class QProgressBar : public QWidget { ... public: int totalSteps() const; int progress() const; const QString &progressString() const; bool percentageVisible() const; void setPercentageVisible(bool); void setCenterIndicator(bool on); bool centerIndicator() const; void setIndicatorFollowsStyle(bool); bool indicatorFollowsStyle() const; public slots: void reset(); virtual void setTotalSteps(int totalSteps); virtual void setProgress(int progress); void setProgress(int progress, int totalSteps); protected: virtual bool setIndicator(QString &progressStr, int progress, int totalSteps); ... };
API鐩稿綋澶嶆潅錛屼笖涓嶇粺涓銆傛瘮濡傦紝浠呬粠鍚嶅瓧reset()騫朵笉鑳界悊瑙e叾浣滅敤錛宻etTotalSteps()鍜宻etProgress()鏄揣鑰﹀悎鐨勩?
鏀硅繘API鐨勫叧閿紝鏄敞鎰忓埌QProgressBar鍜孮t4鐨?a >QAbstractSpinBox綾誨強(qiáng)鍏跺瓙綾?a >QSpinBox錛?a >QSlider鍜?a >QDial寰堢浉浼箋傝В鍐蟲柟娉曪紵鐢╩inimum銆乵aximum鍜寁alue浠f浛progress鍜宼otalSteps銆傚姞鍏lueChanged()淇″彿銆傚姞鍏etRange()鍑芥暟銆?
涔嬪悗瑙傚療progressString銆乸ercentage鍜宨ndicator瀹為檯閮芥寚涓涓笢瑗匡細(xì)鍦ㄨ繘搴︽潯涓婃樉紺虹殑鏂囧瓧銆備竴鑸潵璇存枃瀛楁槸鐧懼垎姣斾俊鎭紝浣嗘槸涔熷彲浠ヤ嬌鐢╯etIndicator()璁句負(fù)浠繪剰瀛楃銆備笅闈㈡槸鏂扮殑API錛?
virtual QString text() const; void setTextVisible(bool visible); bool isTextVisible() const;
榛樿鐨勬枃瀛椾俊鎭槸鐧懼垎姣斾俊鎭傛枃瀛椾俊鎭彲浠ヨ棄鐢遍噸鏂板疄鐜皌ext()鑰屾敼鍙樸?
鍦≦t3 API涓紝setCenterIndicator()鍜宻etIndicatorFollowStyle()鏄袱涓獎鍝嶅榻愮殑鍑芥暟銆備粬浠彲浠ユ柟渚跨殑鐢變竴涓嚱鏁板疄鐜幫紝setAlignment()錛?
void setAlignment(Qt::Alignment alignment);
濡傛灉紼嬪簭鍛樹笉璋冪敤setAlignment()錛屽榻愭柟寮忓熀浜庡綋鍓嶇殑椋庢牸銆傚浜庡熀浜嶮otif鐨勯鏍鹼紝鏂囧瓧灝嗗眳涓樉紺猴紱瀵瑰叾浠栭鏍鹼紝鏂囧瓧灝嗛潬鍦ㄥ彸杈廣?
榪欐槸鏀硅繘鍚庣殑QProgressBar API錛?
class QProgressBar : public QWidget { ... public: void setMinimum(int minimum); int minimum() const; void setMaximum(int maximum); int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QString text() const; void setTextVisible(bool visible); bool isTextVisible() const; Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); public slots: void reset(); void setValue(int value); signals: void valueChanged(int value); ... };
API闇瑕佽川閲忎繚璇併傜涓涓慨璁㈢増涓嶅彲鑳芥槸姝g‘鐨勶紱浣犲繀欏誨仛嫻嬭瘯銆傚啓浜涚敤渚嬶細(xì)鐪嬬湅閭d簺浣跨敤浜嗚繖浜汚PI鐨勪唬鐮侊紝騫墮獙璇佷唬鐮佹槸鍚︽槗璇匯?
鍏朵粬鐨勬妧宸у寘鎷鍒殑浜哄垎鍒湪鏈夋枃妗e拰娌℃湁鏂囨。鐨勬儏鍐典笅錛屼嬌鐢ㄨ繖浜汚PI錛涙垨鑰呬負(fù)API綾誨啓鏂囨。錛堝寘鎷被鐨勬榪板拰鐙珛鐨勫嚱鏁幫級銆?
褰撲綘鍗′綇鏃訛紝鍐欐枃妗d篃鏄竴縐嶈幏寰楀ソ鍚嶅瓧鐨勬柟娉曪細(xì)浠呬粎鏄皾璇曟妸鏉$洰錛堢被錛屽嚱鏁幫紝鏋氫婦鍊鹼紝絳夌瓑鍛釜錛夊啓涓嬫潵騫朵笖浣跨敤浣犲啓鐨勭涓鍙ヨ瘽浣滀負(fù)鐏墊劅銆傚鏋滀綘涓嶈兘鎵懼埌涓涓簿紜殑鍚嶅瓧錛岃繖甯稿父璇存槑榪欎釜鏉$洰涓嶅簲璇ュ瓨鍦ㄣ傚鏋滄墍鏈夊墠闈㈢殑浜嬫儏閮藉け璐ヤ簡騫朵笖浣犵‘璁よ繖涓蹇電殑瀛樺湪錛屽彂鏄庝竴涓柊鍚嶅瓧銆傛瘯绔燂紝“widget”銆?“event”銆?#8220;focus”鍜?#8220;buddy”榪欎簺鍚嶅瓧灝辨槸榪欎箞鏉ョ殑銆?