c++ - Qt:如何使用 registerField() 在 QWizardPages 之间传递变量值

标签 c++ qt wizard qt4.8

我正在开发 Qt 4.8.5。我正在使用 QWizard 结构及其 QWizardPages(让它们命名为 wp1、wp2、wp3,...)。我需要将一个值从 wp2 传递到 wp4 但每次尝试时,我都会得到一个空字符串:( 我需要的值是一个变量(QString sVar;),所以不是一个小部件,我已经尝试了一些东西:

  1. 将 RegisterField 与向导页面本身一起使用(因为它仍然是一种 qwidget),如下所示:registerField("myField",this);但当然,当我去 wp4 并尝试 qDebug()<< "data: " << field("myField").toString();它是空的。
  2. 我在一些论坛上看到有人说你可以创建一个 Q_PROPERTY 然后使用寄存器字段。我将其设置为 Q_PROPERTY sData READ getData() WRITE setDATA()然后用 registerField("myfield, this, ...在这里我遇到了一个问题,因为我希望 sData 出现,但它没有出现。

所以...关于如何使用 registerField 实现此目的的任何想法(我知道我也可以创建自己的插槽和信号,从 wp2 发出它并在 wp4 上 catch 它,但如果可能的话我想避免它)

添加了解决方案:

A.h 类:

class ClassA: public QWizardPage
{
    Q_OBJECT
    Q_PROPERTY(QString sAP READ getAP WRITE setAP)
    ....
   public:
         QString getAP() const {return AP;}
         void setAP(QString s){AP=s;};
   private:
         QString AP;

A类构造函数:

registerField("AP_field",this, "sAP", SIGNAL(APChanged()));

A类::initializePage()函数:

switch(m_iVar)
{
case 0 :...
    break;
case 1: 
    setAP("AP1");
    emit APChanged();
    break;
}

然后在 B 类中(您需要知道该数据):

qDebug() << " AP QPROPERTY = " <<field ("AP_Field").toString();

最佳答案

根据docs :

When we create a field using QWizardPage::registerField(), we pass a unique field name and a widget. We can also provide a Qt property name and a "changed" signal (a signal that is emitted when the property changes) as third and fourth arguments; however, this is not necessary for the most common Qt widgets, such as QLineEdit, QCheckBox, and QComboBox, because QWizard knows which properties to look for.

所以你仍然需要一个信号,但 Qt 将为你处理必要的连接,并在你更改它时捕获你的新值。您必须像这样注册:

registerField("myField", this, "myProperty", SIGNAL(myPropertyChanged()));

然后你必须记住每次更改变量时发出信号,当然还要将其注册为属性。

关于c++ - Qt:如何使用 registerField() 在 QWizardPages 之间传递变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34452603/

相关文章:

windows - 从命令行生成 SQL 服务器脚本?

c++ - Qt & shared_pointer : execution error

c++ - C 中的 C++ '*&' 等价于什么?它甚至存在吗?

c++ - 使用 C++ 创建所有者绘制的菜单,2012 风格

c++ - 我需要显式调用基本虚拟析构函数吗?

c++ - 调整窗口大小,使主要小部件具有特定大小

qt - 平滑滚动 QTableWidget

c++ - QT中动态添加QObject的SIGNAL(带参数)如何处理?

Javascript 小部件与 iFrame?安全问题?

python - 使用 Python 的基于 Web 的向导