我有一个Wizard类,它在构造函数中以QStackedWidget的形式创建三个页面。每个页面都是自己的类。
在第一页中,我有各种各样的表单,并且我已经实现了在单击下一个按钮时分配它们的插槽。它们在Wizard类中分配给它们各自的变量。我的目标是将此信息传递给PageTwo类以进行适当的计算。有关如何做到这一点的任何指示?
向导类
class Wizard : public QDialog
{
Q_Object
public:
Wizard();
QString nameInput;
etc
}
构造
Wizard::Wizard() : QDialog()
{
pages = new QStackedWidget();
pages->addWidget(pageOne = new PageOne(pages));
pages->addWidget(pageTwo = new PageTwo(pages));
connect(next, SIGNAL(clicked(bool)), this, SLOT(saveFormInfo()));
}
赋值函数
void Wizard::saveFormInfo()
{
nameInput = pageOne->nameEdit->text();
etc
}
PageTwo class
class PageTwo : public QWidget
{
public:
PageTwo(QWidget *parent = 0);
void displayOutput(QHboxLayout *layout);
}
这是正确的做法吗?这是我的第一个GUI项目,我似乎无法弄清楚如何传递变量,我假设因为页面是在数据传递之前创建的
答案 0 :(得分:0)
有很多方法可以做到。在不改变代码的情况下,下面有一个建议。
向导类
class Wizard : public QDialog
{
Q_Object
public:
Wizard();
QString nameInput;
etc
}
Wizard::Wizard() : QDialog()
{
pages = new QStackedWidget();
pages->addWidget(pageOne = new PageOne(pages, this));
pages->addWidget(pageTwo = new PageTwo(pages, this));
connect(next, SIGNAL(clicked(bool)), this, SLOT(saveFormInfo()));
}
void Wizard::saveFormInfo()
{
nameInput = pageOne->nameEdit->text();
etc
}
在pagetwo.h
class Wizard;
class PageTwo : public QWidget
{
public:
PageTwo(QWidget *parent = 0, Wizard * wizard);
void displayOutput(QHboxLayout *layout);
private:
Wizard * wizard;
}
在pagetwo.cpp
上#include <wizard.h>
PageTwo::PageTwo(QWidget * parent, Wizard * w) :
QWidget(parent), wizard(w)
{
}
然后,您可以使用this->wizard->nameInput
在PageTwo上获得所需的值