C++ Qt和C++;:覆盖或扩展类

C++ Qt和C++;:覆盖或扩展类,c++,qt,class,qpushbutton,C++,Qt,Class,Qpushbutton,我想向QPushButton添加一些属性(如ID)。因此,我需要扩展或覆盖类Q_WIDGETS\u EXPORT QPushButton:public QAbstractButton 我该怎么做 感谢您的帮助。这实际上取决于用例。从Qt-(Widget)类继承没有问题(通常是预期的方式)(如果我错了,请纠正我)。 所以你可以做: class MyQPushButton : public QPushButton { Q_OBJECT public: MyQPushButton(

我想向
QPushButton
添加一些属性(如ID)。因此,我需要扩展或覆盖类
Q_WIDGETS\u EXPORT QPushButton:public QAbstractButton

我该怎么做


感谢您的帮助。

这实际上取决于用例。从Qt-(Widget)类继承没有问题(通常是预期的方式)(如果我错了,请纠正我)。
所以你可以做:

class MyQPushButton : public QPushButton
{
     Q_OBJECT
public:
     MyQPushButton() : QPushButton(...) {}
private:
    int ID = -1;
}
Qt有一个非常好的文档,您可以查看源代码以了解要覆盖的内容

您还可以使用
QPushButton
扩展新类,但如果您想连接某些东西,则必须始终在类中处理QPushButton引用。在继承的类中,可以连接插槽等。但例如,您可以这样做:

class MyQPushButton 
{
public:
     MyQPushButton() {}
     const QPushButton& const GetQPushButton() { return pushButton; }
     const QPushButton* const GetQPushButtonPtr() { return &pushButton; }

private:
     QPushButton pushButton;
     int ID = -1;
}

没有对与错。但是我会对Qt类使用继承。

这实际上取决于用例。从Qt-(Widget)类继承没有问题(通常是预期的方式)(如果我错了,请纠正我)。
所以你可以做:

class MyQPushButton : public QPushButton
{
     Q_OBJECT
public:
     MyQPushButton() : QPushButton(...) {}
private:
    int ID = -1;
}
Qt有一个非常好的文档,您可以查看源代码以了解要覆盖的内容

您还可以使用
QPushButton
扩展新类,但如果您想连接某些东西,则必须始终在类中处理QPushButton引用。在继承的类中,可以连接插槽等。但例如,您可以这样做:

class MyQPushButton 
{
public:
     MyQPushButton() {}
     const QPushButton& const GetQPushButton() { return pushButton; }
     const QPushButton* const GetQPushButtonPtr() { return &pushButton; }

private:
     QPushButton pushButton;
     int ID = -1;
}

没有对与错。但是我会对Qt类使用继承。

您不需要扩展类,只需在其中放入一个id。。。取而代之的是,利用

按照官方文件的规定:

可以使用泛型函数QObject::property()和QObject::setProperty()读取和写入属性,而不知道所属类的任何信息(属性名称除外)

你只需要做:

ui->myButton->setProperty("Id", 123456);
也可以是另一个对象,例如字符串(或者甚至是您自己的类,如果您将其定义为这样做的话)

读取属性的方法是
property()
,但要读取文档,因为返回的示例是
QVariant

 QVariant(int, 123456)

您不需要扩展类,只需在其中添加id。。。取而代之的是,利用

按照官方文件的规定:

可以使用泛型函数QObject::property()和QObject::setProperty()读取和写入属性,而不知道所属类的任何信息(属性名称除外)

你只需要做:

ui->myButton->setProperty("Id", 123456);
也可以是另一个对象,例如字符串(或者甚至是您自己的类,如果您将其定义为这样做的话)

读取属性的方法是
property()
,但要读取文档,因为返回的示例是
QVariant

 QVariant(int, 123456)

您的id可以简单到一个复杂结构的一个数字/字符串。。。你的应用程序的id是什么?你的id可以简单到一个复杂结构的数字/字符串。。。你的应用程序的id是什么?