Как сгенерировать окно (виджет) при нажатии кнопки в qt - PullRequest
4 голосов
/ 08 июня 2010

Я разработал графический интерфейс через Qt Creator для Linux. Этот дизайн состоит из нескольких полей, редактирования текста и некоторых кнопок.

Когда я нажимаю на кнопку, я хочу отобразить другое окно. Есть ли какая-либо опция GUI для этого или любого жесткого кода?

Ответы [ 2 ]

8 голосов
/ 08 июня 2010

Вам нужно сигналов и слотов.

Вы должны подключить сигнал щелчка к созданному вами пользовательскому слоту вашего основного виджета.

Исправленный код, основанный на комментариях Патрис Бернассола и Работа .

В определении класса (файл .h) добавить строки:

Q_OBJECT

private slots:
    void exampleButtonClicked();
private:
    QDialog *exampleDialog;

Макрос Q_OBJECT необходим при определении сигналов или слотов в ваших классах.

Переменная exampleDialog должна быть объявлена ​​в файле определения, чтобы иметь доступ к ней в слоте.

И вы должны его инициализировать, это обычно делается в конструкторе

ExampleClass::ExampleClass()
{
    //Setup you UI
    dialog = new QDialog;
}

В реализации класса (файл .cpp) добавьте код, который делает то, что вы хотите, в этом случае создайте новое окно.

void ExampleClass::exampleButtonClicked()
{
    exampleDialog->show();
}

А также вы должны подключить сигнал к слоту линией:

connect(exampleButton, SIGNAL(clicked()), this, SLOT(exampleButtonClicked()));

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

http://zetcode.com/tutorials/qt4tutorial/

http://doc.qt.io/archives/qt-4.7/tutorials-addressbook.html

0 голосов
/ 08 июня 2010

по событию нажатия кнопки вы создаете другой виджет и показываете.другой вариант - Сложенный виджет, http://doc.trolltech.com/4.6/qstackedwidget.html

...