gpt4 book ai didi

c++ - 如何从自定义小部件访问小部件?

转载 作者:行者123 更新时间:2023-11-30 02:30:01 25 4
gpt4 key购买 nike

如何从自定义小部件访问小部件?

例如:

我有一个定制的小部件: enter image description here

现在我有一个“用户信息”表单,其中有一个 QWidget 提升为“我的自定义小部件”:

enter image description here

如何从我的自定义小部件中获取文本? (例如 QLineEdit->text())

最佳答案

正确的方法是在你的 MyCustomWidget 中创建一个合适的访问器方法实现:

namespace Ui {
class MyCustomWidget;
}

class MyCustomWidget : public QWidget
{
// You may also wish to add WRITE and NOTIFY methods;
// that's left as an exercise for the reader.
Q_PROPERTY(QString name READ name)

const std::unique_ptr<Ui::MyCustomWidget> ui;

public:
explicit MyCustomWidget(QWidget *parent = 0);
~MyCustomWidget();

QString name() const;
};
#include "ui_mycustomwidget.h"

// Constructor and destructor
MyCustomWidget::MyCustomWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyCustomWidget)
{}

MyCustomWidget::~MyCustomWidget() = default;

// Accessor
QString MyCustomWidget::name() const
{
return ui->nameEdit->text();
}

然后您可以调用 MyCustomWidget::name()来自 UserInfo 方法内部的方法以正常方式:

ui->customWidget->name();

您需要为 address() 创建类似的访问器和 phone()当然也是。


hacky 方法是通过名称获取行编辑,使用 QObject::findChild<QLineEdit>() .这确实破坏了封装,我不会进一步描述。

关于c++ - 如何从自定义小部件访问小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102844/

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