我的主窗体上有一个名为pushButton_Tar1ex
的按钮,上面有一些文字。我的主要表单上有另一个名为pushButton_RenameTargets
的按钮。
当我按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
是公共的: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();
时会发生什么。
我做错了什么?任何帮助,将不胜感激。
答案 0 :(得分: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);
};
此外,您可以在构建label_currentNameTarget1
并初始化RenameTargets
之后,在renametargets
中的其他函数中初始化renametargets.target1NameCurrent
。