Вам нужно сигналов и слотов.
Вы должны подключить сигнал щелчка к созданному вами пользовательскому слоту вашего основного виджета.
Исправленный код, основанный на комментариях Патрис Бернассола и Работа .
В определении класса (файл .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