Вопрос

У меня есть подкласс QDialog, содержащий несколько подклассов QSpinBox.При нажатии на счетчик — клавиатуру (еще один QDialog), на которой вы можете использовать кнопки для ввода цифр.Оба QDialog активируются вызовом QDialog::exec();

Однако при открытии второго QDialog первый закрывается.Я прошел через это и заметил, что первый QDialog еще не заканчивается.QDialog 1 отправляет сообщение «QDialog::Rejected» ПОСЛЕ того, как я завершаю QDialog 2.Я бы хотел, чтобы QDialog 1 вообще не заканчивался, ему необходимо обновить счетчик с введенным значением и открыть больше QDialog для других счетчиков, которые пользователь хочет отредактировать позже.

Я думаю, это связано с тем, что цикл событий QDialog 1 уничтожается циклом событий QDialog 2.Я пробовал использовать QDialog::show на QDialog 2.Виджет появляется на мгновение (миллисекунду), но не остается активным.QDialog 1 также немедленно закрывается.

Это было полезно?

Решение

Для QDialog 1 установлено значение Qt::Popup, для QDialog 2 по умолчанию установлено значение Qt::Dialog.Всплывающее окно закрывается при различных событиях.Я также установил флаг QDialog 2 на Qt::Popup, который, похоже, больше не закрывает QDialog 1.

Другие советы

Судя по тому, как вы устно описали код, вы не должны видеть описываемую проблему.Не видя вашего фактического кода, я не мог рискнуть предположить, что вызывает проблему.Однако я могу с уверенностью сказать, что я бежал exec() в диалоговом окне A, затем внутри этого запуска exec() в диалоге B (с помощью кнопки), и диалог A оставался доступным при выходе из диалога B.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top