gpt4 book ai didi

c++ - Qt 的向导 registerField、setField 和字段方法如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:43 25 4
gpt4 key购买 nike

我有一个继承自 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com