我有一个继承自 QWizardPage
的类,它使用 registerField()
注册它的小部件。
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);
然后我希望能够使用 field()
和 setField()
获取和设置值,但我无法让它工作。
setField("output", field("input"));
这不设置输出 QLineEdit
的文本属性。任何想法是什么问题? (我的理解可能,但为什么它不起作用?)。 field("input")
返回一个未指定类型的 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();
}
最佳答案
根据QWizardPage使用 QLineEdit 注册字段时的文档,默认情况下包含 textChanged() SIGNAL。这意味着每次您在 QLineEdit 中写入时,它的字段值都会自动更新。在您的代码中,您只需使用 field("input").toString() 来获取值。
关于c++ - Qt 的向导 registerField、setField 和字段方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28170212/