2013-08-05 106 views
4

我在Qt中創建了一個應用程序,我遇到了問題。我有一個主窗口,當我按下按鈕時,會出現一個彈出窗口。我不知道我該怎麼做。我試圖調用show()方法時,我按下按鈕,但不工作。我認爲我必須使用QApplication中的exec()方法,但是我不知道如果我在主類中創建它,怎麼調用它。Qt中的PopUP窗口

我的課:

#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(); 
} 

主窗口:

#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; 
} 

彈出:

#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

是的,爲您的按鈕添加信號/插槽連接,並在那裏創建popup1類的實例。然後調用''popup1instance-> exec();'' –

回答

9

您的按鈕信號clicked()與彈出窗口的exec()插槽連接:

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

pushButton - 指針到您的按鈕,並popupWindow - 指針到您的彈出窗口。你可以在QMainWindow的構造函數中編寫這段代碼。

+0

這樣,在彈出的窗口類中我必須創建一個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. MainWindow.cpp創建槽showPopUp()寫裏面的聲明如下:

    mpPopUp1 - >顯示();

  6. 連接您pushButton到槽showPopUp()

    連接(UI->按鈕,SIGNAL(點擊()),對此,SLOT(showPopUp()));

  7. 運行你的應用程序,點擊pushButton