在QT中管理子窗口

时间:2012-02-29 12:32:32

标签: c++ qt window-management

我正在尝试在我的程序周围编写一个接口(使用qt)。基本上我有一个主窗口,然后在某些点它应该“询问用户进行交互”。 - 我正在使用一个对话框。

现在,当阅读关于对话窗口的时候,我在某处读到一个对话窗口应该总是有一个父窗口(我想主窗口?)。现在我发现在我的项目中实现这个麻烦 - 因为我似乎不得不改变我不想改变的代码。

基本上主程序曾经是命令行界面。对于用户交互,程序将只创建一个处理显示和显示的类。用户互动。在GUI版本中,我派生自该类,派生类只包含正确的对话窗口。

现在麻烦的是,在命令行界面中没有谈论“windows”甚至“qt”。 - 骨干应用程序应该对qt一无所知。沟通就像这样:

MAIN_WINDOW -> tells backbone to start acting upon X 
    -> BACKBONE -> asks for UI (opens class with DIALOG).

现在麻烦的是:如何通过BACKBONE(对qt一无所知)获取MAIN_WINDOW指针到DIALOG?这是我必须为MAIN_WINDOW使用单例/全局变量的情况吗?我希望有更好的范例?

1 个答案:

答案 0 :(得分:0)

您可以使用QApplication::instance()->activeWindow()在对话框中获取应用程序的主窗口,intance()是一个静态函数,无需访问QApplication对象(实际上内部实现为单例)即可调用该函数。

http://developer.qt.nokia.com/doc/qt-4.8/qapplication.html#activeWindow