开发者

Qt: How to initialize dialog widgets?

开发者 https://www.devze.com 2023-04-06 05:38 出处:网络
I would like to know what the established procedure is for initializing the controls within a Qt custom dialog box.In the code I am writing, the dialog would present a QListView containing directories

I would like to know what the established procedure is for initializing the controls within a Qt custom dialog box. In the code I am writing, the dialog would present a QListView containing directories from an object passed (by reference) to the dialog class during construction. When the dialog is displayed, I obviously want the list to display the directories currently configured in the object.

Where should this be done though? Perhaps in the overridden showEvent() method?

Background: I used to do a lo开发者_运维知识库t of MFC programming back in the day, and would have done this sort of stuff in the OnCreate method, or some such, once the window object had been created.


Thankfully Qt doesn't require you to do any hooking to find the moment to create things (unless you want to). If you look over the Qt examples for dialogs, most do all the constructing in the constructor:

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

The tab dialog example--for instance--doesn't do "on-demand" initializing of tabs. Although you could wire something up via the currentChanged signal:

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

Wizard-style dialogs have initializePage and cleanupPage methods:

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

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

But by and large, you can just use the constructor. I guess the main exception would be if find yourself allocating the dialog at a much earlier time from when you actually display it (via exec), and you don't want to bear the performance burden for some part of that until it's actually shown. Such cases should be rare and probably the easiest thing to do is just add your own function that you call (like finalizeCreationBeforeExec).

0

精彩评论

暂无评论...
验证码 换一张
取 消