2016-11-25 42 views
0

我的主表單上有一個名爲pushButton_Tar1ex的按鈕,它上面有一些文本。我的主表單上還有一個名爲pushButton_RenameTargets的按鈕。如何將變量從MainWindow傳遞到Qt中的SecondWindow C++

當我推pushButton_RenameTargets,下面的代碼執行:

void MainWindow::on_pushButton_RenameTargets_clicked() 
{ 
    RenameTargets renametargets; 
    renametargets.target1NameCurrent = ui->pushButton_Tar1ex->text(); 
    renametargets.setModal(true); 
    renametargets.exec(); 
} 

所以我的第二個窗口被稱爲RenameTargets和代碼的函數的第一行創建一個對象renametargets。然後我設置了renametargets.target1NameCurrent = ui->pushButton_Tar1ex->text();其中target1NameCurrent在public:renametargets.h部分。然後,在RenameTargets我由標籤設置爲pushbuttontext:

RenameTargets::RenameTargets(QWidget *parent) : 
    QDialog(parent), 
    ui(new Ui::RenameTargets) 
{ 
    ui->setupUi(this); 
    ui->label_currentNameTarget1->setText(target1NameCurrent); 

} 

但沒有出現在標籤label_currentNameTarget1

我已經運行一些qDebug的東西,當RenameTargets renametargets;是,當我把它通過RenameTargets ui(new Ui::RenameTargets)部分下運行時宣佈renametargets.target1NameCurrent = ui->pushButton_Tar1ex->text();前的按鈕來運行發生的事情是。

我在做什麼錯?任何幫助,將不勝感激。

回答

1

您在構建對象後設置了renametargets.target1NameCurrent成員變量renametargets ......這是問題所在,因爲您在構造函數中使用target1NameCurrent來設置標籤。

一種解決方案是通過target1NameCurrent通過構造函數。

void MainWindow::on_pushButton_RenameTargets_clicked() 
{ 
    RenameTargets renametargets(this, ui->pushButton_Tar1ex->text()); 
    renametargets.setModal(true); 
    renametargets.exec(); 
} 

RenameTargets.cpp

RenameTargets::RenameTargets(QWidget *parent, const QString & target1NameCurrent): 
    QDialog(parent), 
    ui(new Ui::RenameTargets), 
    target1NameCurrent(target1NameCurrent) 
{ 
    ui->setupUi(this); 
    ui->label_currentNameTarget1->setText(target1NameCurrent); 

} 

RenameTargets.h

class RenameTargets{ 
    public: 
    RenameTargets(QWidget *parent, const QString & target1NameCurrent); 

}; 

而且,你可以構建renametargets和初始化renametargets.target1NameCurrent後初始化label_currentNameTarget1在另一個功能RenameTargets

+0

怎麼樣?對不起,我是一個新手:) – Scientized

+0

@Scientized我添加了一個例子 – HazemGomaa

+0

我收到一個錯誤錯誤:沒有匹配的函數調用'RenameTargets :: RenameTargets(QString)' RenameTargets renametargets(ui-> pushButton_Tar1ex-> text()); ^ – Scientized