首页 > 解决方案 > Qt 和 C++:覆盖或扩展类

问题描述

我想将一些属性(如 ID)添加到QPushButton. 因此,我需要扩展或覆盖类Q_WIDGETS_EXPORT QPushButton : public QAbstractButton

我怎么做?

谢谢您的帮助。

标签: c++qtclassqpushbutton

解决方案


您不需要扩展类以在其中放置一个 id ...而是使用属性系统

如官方文档中所述:

可以使用通用函数 QObject::property() 和 QObject::setProperty() 来读取和写入属性,而无需知道除了属性名称之外的拥有类的任何信息。

你只需要做:

ui->myButton->setProperty("Id", 123456);

也可以是另一个对象,例如字符串(如果您定义它来执行此操作,甚至可以是您自己的类)

ui->myButton->setProperty("_name", "123456");

读取属性是property()适合您的方法,但请阅读文档,因为您得到一个QVariant作为返回示例:

 QVariant(int, 123456)

推荐阅读