Управление подокнами в QT - PullRequest
       28

Управление подокнами в QT

0 голосов
/ 29 февраля 2012

Я пытаюсь написать интерфейс вокруг моей программы (используя qt). В основном у меня есть главное окно, и затем в определенные моменты оно должно «попросить пользователя о взаимодействии». - Я использую диалог для этого.

Теперь, когда я читаю о диалоговых окнах, я где-то читал, что у диалогового окна всегда должно быть родительское окно (главное окно, я полагаю?). Теперь я нахожу это трудным для реализации в моем проекте - так как мне кажется, что мне нужно изменить код, который я не хочу менять.

В основном основная программа использовалась как интерфейс командной строки. А для взаимодействия с пользователем программа просто создаст класс, который обрабатывает отображение и взаимодействие с пользователем. В версии GUI я наследую от этого класса, а производный класс просто переносит правильное диалоговое окно.

Теперь проблема в том, что в интерфейсе командной строки не говорится о «windows» или даже «qt». - Магистральное приложение не должно ничего знать о qt. Сообщение просто так:

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

Теперь проблема в том, как мне получить указатель MAIN_WINDOW через BACKBONE (который ничего не знает о qt) на DIALOG? Это тот случай, когда я должен использовать переменную singleton / global для MAIN_WINDOW? Я надеюсь, что есть лучшая парадигма?

1 Ответ

0 голосов
/ 29 февраля 2012

Вы можете получить главное окно вашего приложения в диалоге с помощью QApplication::instance()->activeWindow(), intance () - это статическая функция, которую можно вызывать, не имея доступа к объекту QApplication (который на самом деле внутренне реализован как синглтон).

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

...