Заставить QDialog оставаться открытым - PullRequest
1 голос
/ 20 августа 2011

Как лучше всего заставить QDialog оставаться открытым, когда вызывается слот accept() диалога?Я думал о том, чтобы переопределить эту функцию, чтобы заставить исполнительного окна диалога возвращаться, не скрывая диалог, но мне было интересно, есть ли более эффективные способы сделать это.

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Вам нужно сделать свой QDialog немодальным, вызвав show вместо exec и используя пользовательский сигнал вместо accept, потому что accept закрывает окно.И вы подключаете этот сигнал к слоту в главном окне с помощью кода, который вы имели после вызова exec.

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

2 голосов
/ 20 августа 2011

Вместо того, чтобы использовать QDialog, я бы достиг эффекта с QDockWidget.

  • Удалите функцию, которая позволяет перемещать док-станцию ​​(QDockWidget :: DockWidgetMovable)
  • Установить плавающий виджет (setFloating (true))
  • Подключите элементы в виджете дока к соответствующим сигналам и слотам в главном окне

Ссылки

...