Подключение QDialog к QMainWindow - PullRequest
2 голосов
/ 24 января 2012

Я создал QMainWindow, используя QT Designer.У меня есть компоненты, которые имеют слоты сигналов.Я сделал несколько некомпонентных компонентов QObjects, чтобы я мог также использовать механизм сигнал / слот.

Следующим моим шагом было добавление немодального диалога.Я не хочу, чтобы диалог блокировал главное окно.Я бы хотел, чтобы диалог оставался активным (где-то видимым для пользователя или в фоновом режиме), пока пользователь не щелкнет его, чтобы закрыть его.Я создал немодальный объект QDialog с дизайнером.Диалог появляется по мере необходимости.Он также сохраняет информацию из предыдущего сеанса в текстовом поле.Это просто имя файла.

Однако, когда я начал подключать QDialog к QMainWindow, механизм сигнал / слот не работает.

Это мой код:

//In the .h file declared as member of the QMainWindow
ScriptDialog *theScriptDialog;

//In the .cpp file, the constructor of QMainWindow
theScriptDialog = new ScriptDialog(this);

QObject::connect(theScriptDialog, SIGNAL(notifyStartScript(QString)), SLOT   (startScripting(QString)));

Возможно, я лаю не на том дереве.Есть ли лучший способ создать всплывающее окно, подобное этому?

1 Ответ

0 голосов
/ 03 февраля 2013

Сначала проверьте, успешно ли установлено соединение: проверьте вывод консоли приложения на наличие предупреждения о неудачном соединении, затем напечатайте возвращаемое значение вызова соединения.

Затем некоторые действия:

  • У вас есть макрос Q_OBJECT в файле scriptdialog.h
  • Вы запомнили запуск qmake после добавления новых Q_OBJECT классов
  • Добавление qDebug print / точка останова в точку, из которой notifyStartScript испускается
  • Подключите что-нибудь еще к startScripting слоту с qDebug print или точкой останова, чтобы убедиться, что он вызывается
  • Если вы использовали сборки в исходном коде (например, просто запустили qmake и make из командыline at source dir), затем переключитесь на 'shadow build' в отдельном dir сборки, убедитесь, что исходный dir очищен от сгенерированных файлов .cpp, .h и .o.
...