2016-11-25 95 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