2011-09-21 37 views
1

我想知道在Qt自定義對話框中初始化控件的已建立的過程。在我編寫的代碼中,對話框將顯示一個QListView,其中包含在構建過​​程中通過引用傳遞給對話框類的對象的目錄。當顯示對話框時,我顯然希望列表顯示當前在對象中配置的目錄。Qt:如何初始化對話框小部件?

這應該在哪裏做?也許在重覆的showEvent()方法?

背景:我以前做了很多MFC編程的回到了一天,會做這種東西在OnCreate方法,或一些這樣的,一旦窗口對象已經建立。

回答

2

謝天謝地,Qt並不要求你做任何鉤子來找到創建事物的時刻(除非你想)。如果你看看在Qt的例子進行對話,大部分做所有的構建在構造函數中:

http://doc.qt.io/archives/qt-4.7/examples-dialogs.html

的標籤對話框的例子 - 例如 - doesn't做到「按需」選項卡的初始化。雖然你可以通過currentChanged信號線的東西了:

http://doc.qt.io/archives/qt-4.7/qtabwidget.html#currentChanged

嚮導式的對話具有initializePagecleanupPage方法:

http://doc.qt.io/archives/qt-4.7/qwizardpage.html#initializePage

http://doc.qt.io/archives/qt-4.7/qwizardpage.html#cleanupPage

但總的來說,你可以使用構造函數。我想主要的例外情況是,如果發現自己在實際顯示對話的時候(通過exec)在更早的時間分配對話,並且在實際顯示之前不想承擔某些部分的性能負擔。這種情況應該是非常罕見的,可能最簡單的做法就是添加自己調用的函數(如finalizeCreationBeforeExec)。