作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从自定义小部件访问小部件?
例如:
现在我有一个“用户信息”表单,其中有一个 QWidget 提升为“我的自定义小部件”:
如何从我的自定义小部件中获取文本? (例如 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/
我是一名优秀的程序员,十分优秀!