Qt Как открыть QDialog, когда основное приложение полностью загружено, чтобы загрузить все виджеты - PullRequest
2 голосов
/ 03 апреля 2011

Привет всем У меня есть приложение главного окна, и мне нравится всплывающее диалоговое окно для настроек, когда приложение (qMainWindow)
Полностью загружен? Я пытался просто в главном окне конструктора:

SettingsDialog settingsDialog;
settingsDialog.exec();

но когда я запускаю свое приложение, я вижу QDialog и главное окно свернуто в фоновом режиме
что мне нужно, чтобы мои главные окна были в фоновом режиме, но не свернуты, а QDialog в середине блокировал главное окна до тех пор, пока не будет установлена ​​кнопка ОК

1 Ответ

4 голосов
/ 03 апреля 2011

Использование QTimer::singleShot с нулевым интервалом времени вызовет указанный слот из цикла событий, когда конструктор и show() будут завершены.Вот пример:

#include <QtCore/QTimer>
#include <QtGui/QApplication>
#include <QtGui/QDialog>
#include <QtGui/QMainWindow>

class MW : public QMainWindow
{
  Q_OBJECT
public:
  MW();
private slots:
  void showDialog();
};

MW::MW()
{
  QTimer::singleShot(0, this, SLOT(showDialog()));
}

void MW::showDialog()
{
  QDialog d;
  d.setWindowTitle("dialog");
  d.exec();
}

int main(int argc, char* argv[])
{
  QApplication app(argc, argv);
  MW mw;
  mw.show();
  app.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...