Это действительно зависит от варианта использования. В наследовании от классов 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-классов.