Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt';s向导注册表字段、设置字段和字段方法是否有效?_C++_Qt_Wizard - Fatal编程技术网

C++ Qt';s向导注册表字段、设置字段和字段方法是否有效?

C++ Qt';s向导注册表字段、设置字段和字段方法是否有效?,c++,qt,wizard,C++,Qt,Wizard,我有一个从QWizardPage继承的类,它使用registerField()注册它的小部件 然后我希望能够使用field()和setField()获取和设置值,但我无法让它工作 setField("output", field("input")); 这不会设置输出的文本属性QLineEdit。你知道问题出在哪里吗?(我的理解可能是这样,但为什么不起作用?)字段(“输入”)返回类型未指定的QVariant(我希望返回“Hello”字符串) 完整代码: #include <QApplica

我有一个从
QWizardPage
继承的类,它使用
registerField()
注册它的小部件

然后我希望能够使用
field()
setField()
获取和设置值,但我无法让它工作

setField("output", field("input"));
这不会设置输出的文本属性
QLineEdit
。你知道问题出在哪里吗?(我的理解可能是这样,但为什么不起作用?)<代码>字段(“输入”)返回类型未指定的
QVariant
(我希望返回
“Hello”
字符串)

完整代码:

#include <QApplication>
#include <QDialog>
#include <QWizard>
#include <QWizardPage>
#include <QLineEdit>
#include <QFormLayout>

class MyWizard : public QWizard
{
public:
   MyWizard();
};

class MyWizardPage : public QWizardPage
{
public:
   MyWizardPage();
};

MyWizardPage::MyWizardPage()
{
   QLineEdit* input = new QLineEdit;
   input->setText("Hello");
   QLineEdit* output = new QLineEdit;

   QFormLayout* layout = new QFormLayout;
   layout->addRow("Input", input);
   layout->addRow("Output", output);
   setLayout(layout);

   registerField("input", input);
   registerField("output", output);
   setField("output", field("input"));
}

MyWizard::MyWizard()
{
   addPage(new MyWizardPage);
}

int main(int argc, char** argv)
{
   QApplication application(argc, argv);
   MyWizard wizard;
   return wizard.exec();
}
#包括
#包括
#包括
#包括
#包括
#包括
类MyWizard:公共QWizard
{
公众:
MyWizard();
};
类MyWizardPage:公共QWizardPage
{
公众:
MyWizardPage();
};
MyWizardPage::MyWizardPage()
{
QLineEdit*输入=新的QLineEdit;
输入->设置文本(“你好”);
QLineEdit*输出=新的QLineEdit;
QFormLayout*布局=新QFormLayout;
布局->添加行(“输入”,输入);
布局->添加行(“输出”,输出);
设置布局(布局);
寄存器字段(“输入”,输入);
寄存器字段(“输出”,输出);
设置字段(“输出”,字段(“输入”);
}
MyWizard::MyWizard()
{
addPage(新的MyWizardPage);
}
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
我的向导;
返回wizard.exec();
}

根据文档,当您向QLineEdit注册字段时,默认情况下会包含textChanged()信号。这意味着每次在QLineEdit中写入时,其字段值将自动更新。在代码中,您只需使用字段(“输入”)。toString()获取值。

您可以在页面上添加新项,并在
QWizardPage
构造函数中使用
registerField()
函数。然后在外部可以使用
field()
setField()
。在
QWizardPage
构造函数中使用这些函数是不符合逻辑的,因为您可以访问新项(
输入
输出

要检查函数
field()
setField()
只需在创建
向导后尝试使用它即可:

MyWizard wizard;
wizard.setField("output", field("input"));

我尝试过,并且
字段(“输入”).toString()返回一个空字符串。因此我想说的不是向导没有设置字符串,而是它总是将字符串设置为空。为什么?我不知道。我只是想知道,由于我面临同样的问题,您是否解决了这个问题。
MyWizard wizard;
wizard.setField("output", field("input"));