Qt中使用show函式的注意事項。

2021-08-25 04:31:32 字數 956 閱讀 1335

前天做專案時遇到乙個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...