我想知道在Qt自定义对话框中初始化控件的既定过程是什么。在我编写的代码中,对话框将显示一个QListView
,其中包含在构造期间传递(通过引用)对象类的对象的目录。显示对话框时,我显然希望列表显示当前在对象中配置的目录。
虽然这应该在哪里完成?也许在被覆盖的showEvent()
方法中?
背景:我以前做了很多MFC编程,并且会在OnCreate
方法中完成这类工作,或者一些这样的东西,一旦窗口完成对象已经创建。
答案 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
向导式对话框有initializePage
和cleanupPage
方法:
http://doc.qt.io/archives/qt-4.7/qwizardpage.html#initializePage
http://doc.qt.io/archives/qt-4.7/qwizardpage.html#cleanupPage
但总的来说,你可以使用构造函数。我想主要的例外是如果你发现自己在实际显示时通过exec
)更早地分配对话框,并且你不想承担部分内容的性能负担,直到它实际上显示出来了。这种情况应该是罕见的,可能最简单的做法就是添加你自己调用的函数(如finalizeCreationBeforeExec
)。