Как мне открыть новое окно с помощью кнопки в главном окне, используя Qt Creator? - PullRequest
7 голосов
/ 14 июня 2011

Это кажется простой задачей, но я не смог понять, как бы я это сделал. У меня есть два окна, разработанные в Qt Creator, одно из которых должно открываться при нажатии кнопки в моем главном окне. Вот код, который я пытаюсь использовать, чтобы открыть его:

void MainWindow::on_generateDomain_clicked()
{
    DomainGeneration dg;
    dg.show();
}

DomainGeneration - это имя класса моего окна. Заголовок и исходный код для этого не были изменены по умолчанию созданным для меня Qt Creator Я делаю что-то неправильно? Я не получаю никаких ошибок, окно просто не открывается при нажатии кнопки.

Ответы [ 2 ]

11 голосов
/ 14 июня 2011
{
    DomainGeneration dg; // <-- automatic object
    dg.show(); // equivalent to setVisible(true)
} // at this point dg is destroyed!

Одним из решений является создание dg (частного) члена данных класса MainWindow.

QDialog имеет методы open() и exec(), которые показывают диалог как модальный диалог. Возможно, вы предполагали, что это было поведение по умолчанию. В вашем случае, однако, dg создается и уничтожается немедленно.

0 голосов
/ 16 июля 2012

Это скорее «спасибо» Нику Дандулакису, чем ответ.Это было так полезно.Я такой нуб, я бы никогда не подумал об уничтожении объекта после завершения метода.

Я объявил (или создал ... или оба?) Мой класс о вЗаголовочный файл для моего главного окна (window.h), затем добавил следующие функциональные возможности в слот в window.cpp:

void Window::on_actionAbout_triggered()
{
    Window::about.show();
    Window::about.raise();
    Window::about.activateWindow();
}

Я думаю, это работает, потому что объект about ранеесоздается и поэтому не ограничивается областью действия метода или слота, который заканчивается довольно быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...