1. 程式人生 > >關於QWidget的子類呼叫show()方法不能顯示的問題

關於QWidget的子類呼叫show()方法不能顯示的問題

        Qt學了不久,對於它的用法我還不是很熟悉。今天遇到了一個問題:我定義了一個QWidget的子類,程式裡面還有一個主類,主類某一個成員就是QWidget子類的指標,然後用主類去初始化這個指標並呼叫show方法來顯示一些東西,然而這個子類並不能顯示。

        我有上網查了很久,好像又是找不到問這個問題的,只好靠自己動手了。動手之後發現換成QDialog的子類倒是能顯示。我在原來QWidget子類的建構函式裡面加了一個label,然而上面的文字顯示在了主類的窗體裡面!

        上網又查了一下,發現QDialog跟QWidget還是有些不同的地方。而Qt的文件上有這麼一句話:“Non-window widgets are child widgets, displayed within their parent widgets.

”,大概就是“非視窗的部件是子部件,顯示在它們的父部件中”。看來這就是問題所在。

        解決方法還是有的,一開始我把繼承的父類從QWidget改成QDialog,發現沒有什麼問題。不過在原來的類的基礎上,加入setWindowFlags(Qt::Window)這句到它的建構函式裡面就行了,讓它以視窗顯示,這樣改動就很小了。