2011-09-21 123 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)。