2016-01-20 91 views
0

當我啓動我的程序時,彈出一個對話窗口並要求輸入名稱。一旦我輸入了我的名字並按下按鈕,它將關閉對話框並打開主窗口。Qt(C++)將對話框中的變量傳遞給main.cpp

我的問題是如何讓變量/名稱,我只是在該對話框到另一個類/我的main.cpp

Main.cpp的

#include "mainwindow.h" 
#include <QApplication> 
#include <QtDebug> 
#include <QtNetwork> 
#include <sstream> 
#include "mydialog.h" 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    // Open Dialog 
    MyDialog mDialog; 
    mDialog.setModal(true); 
    mDialog.exec(); 

    //Open Main Window 
    GW2::MainWindow w; 
    w.show();  
    return a.exec(); 
} 

mydialog.cpp

#include "mydialog.h" 
#include "ui_mydialog.h" 
#include <QDebug> 

using namespace std; 


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

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

void MyDialog::on_pushButton_clicked() 
{ 
    QString MYNAME = ui->lineEdit->text(); 
    close(); 
} 

我可以在這裏得到MYNAME,這是我按下按鈕後,但我需要通過該變量...

mydialog.h

#ifndef MYDIALOG_H 
#define MYDIALOG_H 

#include <QDialog> 
#include <QString> 


namespace Ui { 

class MyDialog; 
} 

class MyDialog : public QDialog 
{ 
    Q_OBJECT 

public: 
    explicit MyDialog(QWidget *parent = 0); 
    ~MyDialog(); 

private slots: 
    void on_pushButton_clicked(); 


private: 
    Ui::MyDialog *ui; 
}; 

#endif // MYDIALOG_Hs 

我試過使用谷歌和搜索功能,但沒有找到任何工作在我的項目上。希望您能夠幫助我。乾杯

+1

你可以讓你'my_name'變量的類MyDialog的成員。根本不是一個糟糕的解決方案。 – SergeyA

回答

1

MyDialog補充一點:

QString MyDialog::getName() 
{ 
    return ui->lineEdit->text(); 
} 

然後做:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    // Open Dialog 
    MyDialog mDialog; 
    mDialog.setModal(true); 
    mDialog.exec(); 

    // retrieve the name  
    QString name = mDialog.getName(); 

    //Open Main Window 
    GW2::MainWindow w; 
    w.show();  
    return a.exec(); 
} 

注意,對話框會被取消。你應該叫accept(),而不是從close()on_pushButton_clicked()後來測試,如果對話框被接受與否:

if (mDialog.exec() == QDialog::Accepted) 
{ 
    QString name = mDialog.getName(); 
    ... 
+0

謝謝你做到了!過度思考這整個話題,並做出奇怪的東西,但現在它的工作!謝謝。 – Tyrone