2012-07-04 85 views
1

我目前正在學習Qt,我似乎遇到了問題。 在我的實踐項目中,我有兩個類:MainWindow和Dialog。Qt傳遞不相關對象之間的變量

MainWindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include "dialog.h" 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private slots: 
    void on_pushButtonDialog_clicked(); 

private: 
    Ui::MainWindow *ui; 
    Dialog *dialogInstance; 

}; 

#endif // MAINWINDOW_H 

MainWindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    dialogInstance = new Dialog(this); 
} 

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

void MainWindow::on_pushButtonDialog_clicked() 
{ 
    dialogInstance->show(); 
} 

Dialog.h

#ifndef DIALOG_H 
#define DIALOG_H 

#include <QDialog> 

namespace Ui { 
class Dialog; 
} 

class Dialog : public QDialog 
{ 
    Q_OBJECT 

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

private: 
    Ui::Dialog *ui; 
}; 

#endif // DIALOG_H 

Dialog.cpp

#include "dialog.h" 
#include "ui_dialog.h" 

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

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

我的目標是使用輸入對話框窗口的值,則對主窗口顯示輸入的值,我知道如何使用小部件類中的周圍傳遞變量,但我不知道如何在不相關的對象之間傳輸變量。

任何輸入都會有很大的幫助。

+0

您可以在一個類從部件連接'signals'到'slots'中的其他對象的其它物品/部件......什麼是你實際遇到的問題? – tmpearce

+0

爲了能夠使用信號和插槽,Dialog類是否必須具有它自己的MainWindow對象? –

+0

編號''將來自對話框的信號連接到'MainWindow'中的'slot'。 – tmpearce

回答

1

試試這個:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    connect(ui->pushButtonDialog, SIGNAL(clicked()), this, SLOT(on_pushButtonDialog_clicked())); 
    dialogInstance = new Dialog(this); 
} 
// ... 
+0

這不是他的問題。他的問題是如何解析Dialog和MainWindow之間的可讀性。 – TimZaman

+0

@TimZaman有什麼區別? –

+0

在您的示例中,您根本不解析變量,只能將信號連接到插槽。答案是可以簡單地通過使用f.e來分析一個變量。 (最後一行)'QDialog * about = new QDialog(0,0); settingsUi.setupUi(約); \t settingsUi.spinBoxMin-> setValue(absMin);' – TimZaman