0

我正在尝试围绕我的程序编写一个界面(使用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 使用单例/全局变量的情况吗?我希望有一个更好的范例?

4

1 回答 1

0

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

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

于 2012-02-29T12:45:34.910 回答