【问题标题】:Should I define a destructor for a derivate of QWidget我应该为 QWidget 的派生定义一个析构函数吗
【发布时间】:2020-12-15 16:35:32
【问题描述】:

我想知道是否应该定义 QWidget 派生的析构函数。
示例

class CustomWidget : public QWidget{
    QLabel* field;
    CustomWidget(QWidget* parent) : 
        QWidget( parent ), 
        field( new QLabel(this) ) {};
}

我已经读过“小部件树”,如果父级被破坏,它将调用所有子级的析构函数,但我的意思是,只是为了确定

【问题讨论】:

  • 您的小部件是否分配了任何需要释放的内存?
  • @JarMan 因为有一个new...
  • 我说“那需要被释放”。您示例中的 QLabel 将自动被删除。

标签: c++ qt widget destructor


【解决方案1】:

对于给定的,没有。育儿系统将照顾field。但是你应该添加Q_OBJECT宏。

【讨论】:

  • 那个宏会做什么?
  • @Berto99 由于该类继承自QObject,因此应添加宏(因此在育儿系统中可能会出现奇怪的行为)。
  • @Berto99 see
  • But u must add Q_OBJECT macro. 不正确。仅当您需要为某些内容生成元数据时才需要这样做,例如定义您自己的信号。
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2015-08-07
  • 2013-01-19
  • 2014-01-01
  • 2020-09-25
  • 2022-01-03
  • 2012-07-30
  • 2016-03-26
相关资源
最近更新 更多