前天做專案時遇到乙個bug:乙個widget的部分子widget在symbian平台下始終顯示不出來,追了很久,終於發現是show函式的位置在作怪。
在q中:要想顯示乙個widget最簡單的方式就是呼叫show函式,(這也包括showfullscreen等其他顯示函式),但是這個函式到底該在**調?這個還是需要注意的。
乙個qwidget視窗,我們在其建構函式中建立若干子widget。一般我們都是在建立完之後再來呼叫show函式,亦即:
mywidget widget;
widget.show();
但是如果我們在父視窗的建構函式內部就呼叫show()函式會出現什麼現象呢?舉例如下:
mywidget::mywidget(qwidget*parent):qwidget(parent)
ichild1 = new qwidget(this);
//位置1
ichild2 = new qwidget(this);
//位置2
ichild2 = new qwidget(this);
//位置3
如果我們分別在上述3個位置處呼叫show()函式,會有什麼效果呢?
1:在windows平台下:沒有任何問題,三個子視窗都會準確的顯示出來。
2:在symbian平台下:在哪個位置處呼叫的show()函式,則該位置後邊的所有**建立的子視窗將全部顯示不出來!!
所以為了實現所謂的cross-platform ,我們最好不要再建構函式中呼叫show()函式,而是在該視窗建立完成之後來呼叫!
說明:
1:上述情況只有在視窗的父類是qwidget或其派生類時才會出現,而且只在symbian平台下才有。
2:如果你用的是qgraphicsview,則無論你show函式在建構函式中的哪個位置,都不會出現這個問題。
3:本例測試平台為:qt4.6.2
php遞迴函式中使用return的注意事項
php遞迴函式中使用return的時候會碰到無法正確 function test i else echo test 30 這段 看起來沒有問題,如果不執行一下估計你也不會認為他有什麼問題,及時執行起來發現有問題你也不一定知道 有問題,但其實這個函式的else裡面是有問題的。在這段 裡面執行的結果是沒...
php遞迴函式中使用return的注意事項
php遞迴函式中使用return的時候會碰到無法正確返回想要的值得情況,如果不明白其中的原因,很難找出錯誤的,就下面的具體例子來說明一下吧 複製 如下 function test i else echotest 30 www.cppcns.com 這段 看起來沒有問題,如果不執行一下估計你也不會認為...
Swift中使用protocol的注意事項
oc中protocol是用weak和assign修飾的弱引用.swift中protocol功能被增強了,如果使用以下 就會變成強引用.protocol testdelegate class test nsobject testdelegate static func test deinit clas...