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是什么?