2013-08-05 5 views
4

Я создаю приложение в Qt, и у меня есть проблема. У меня есть главное окно, и я хочу, чтобы при нажатии кнопки появляется всплывающее окно. Я не знаю, как я могу это сделать. Я попытался вызвать метод show(), когда я нажимаю кнопку, но не работает. Я думаю, что я должен использовать метод exec() из QApplication, но я не знаю, как это назвать, если я создал его в основном классе.PopUP Окно в Qt

Мои классы:

#include "mainwindow.h" 
#include "dialog.h" 
#include <QApplication> 
#include "popup1.h" 

int main(int argc, char *argv[]) 
{ 
QApplication a(argc, argv); 
MainWindow w; 
w.show(); 

return a.exec(); 
} 

MainWindow:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <iostream> 
#include <QApplication> 
int posiciones[10]; 
std::string port=""; 
MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
for (int i=1; i<10; i++){ 
    if(i==7){ 
     posiciones[i]=90; 
    } 
    posiciones[i]=0; 
} 
//Mandar el vector para mover 
ui->setupUi(this); 
} 

MainWindow::~MainWindow() 
{ 
delete ui; 
} 

PopUp:

#include "popup1.h" 
#include "ui_popup1.h" 

Popup1::Popup1(QWidget *parent) : 
QDialog(parent), 
ui(new Ui::Popup1) 
{ 
ui->setupUi(this); 
} 

Popup1::~Popup1() 
{ 
delete ui; 
} 

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

+0

Где ваш код, который обрабатывает событие щелчка QPushButton? – RobbieE

+0

yep, добавьте сигнал/слот для вашей кнопки и создайте экземпляр вашего класса popup1. Затем вызовите '' popup1instance-> exec(); '' –

ответ

9

Подключите кнопку сигнала clicked() с exec() слотом вашего всплывающего окна:

connect(pushButton, SIGNAL(clicked()), popupWindow, SLOT(exec())); 

Где pushButton - указатель на кнопку, и popupWindow - указатель на ваше всплывающем окно. Вы можете написать этот код в конструкторе QMainWindow.

+0

, поэтому в классе popup window я должен создать метод exec()? И что должен сделать этот метод? – Elseine

+2

Не создавайте exec(), используйте QDialog :: exec() https://qt-project.org/doc/qt-5.0/qtwidgets/qdialog.html#exec – koan

+0

он работает !! Благодаря! – Elseine

1
  1. Включите ваш класс всплывающего в вашем MainWindow.h:

    включает "popup.h"

  2. Определить указатель на ваш всплывающий класс в MainWindow.h: popup1

    * mpPopUp1;

  3. Создание объекта в MainWindow.cpp файле:

    mpPopUp1 = новый popup1;

  4. Определить слот в MainWindow.h и назвать его, например, showPopUp():

    недействительной showPopUp();

  5. Создать слот showPopUp() в вашем MainWindow.cpp и написать следующее заявление внутри него:

    mpPopUp1 -> показать();

  6. Подключите ваш pushButton к слоту showPopUp():

    подключения (ui-> КНОПКА, SIGNAL (нажал()), это, SLOT (showPopUp()));

  7. Run вы приложение, нажмите на pushButton и вуаля