關於QWidget的子類呼叫show()方法不能顯示的問題
阿新 • • 發佈:2019-01-31
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)這句到它的建構函式裡面就行了,讓它以視窗顯示,這樣改動就很小了。