问:如何初始化对话框小部件?

时间:2011-09-21 14:17:50

标签: qt qt4 dialog initialization

我想知道在Qt自定义对话框中初始化控件的既定过程是什么。在我编写的代码中,对话框将显示一个QListView,其中包含在构造期间传递(通过引用)对象类的对象的目录。显示对话框时,我显然希望列表显示当前在对象中配置的目录。

虽然这应该在哪里完成?也许在被覆盖的showEvent()方法中?

背景:我以前做了很多MFC编程,并且会在OnCreate方法中完成这类工作,或者一些这样的东西,一旦窗口完成对象已经创建。

1 个答案:

答案 0 :(得分:2)

值得庆幸的是Qt并不要求你做任何事情以找到创造事物的时刻(除非你想)。如果查看对话框的Qt示例,大多数都在构造函数中进行构造:

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

选项卡对话框示例 - 例如 - 不执行“按需”初始化选项卡。虽然你可以通过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)。