• 3110阅读
  • 3回复

QT设计器设计的类问题(已解决) [复制链接]

上一主题 下一主题
离线zl39049979
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-28
用设计器设计了UI,比如一个QWIDGET,在实现类中他会实现一个设计的类的指针当作成员,比如QWidget a;;public QWidget{private:UI_Qwidget* ui;}然后在构造函数中,a::a(QWidget *parent) :QWidget(parent),ui(new Ui::QWidget),其中最后的ui(new Ui::QWidget)是不是NEW一个ui,产生设计的类对象,我对这种写法不太明白,这里以前都是写父类,我现在只能如上面那样理解,但是为什么不在构造函数里new一个ui,然后ui->setup,是否这样在构造函数结束指针就无用?但是创建的类在堆中依然存在,会引起问题。在析构中我看到了delete ui,我想也许QT的垃圾箱只能对部件成员如LABEL ,BUTTON等回收而不对窗口进行回收,那么这个指针就不能new在构造函数里,因为DELETE时指针就无效了,那么这种写法该怎样正确理解呢?他的作用域又在哪里呢?
[ 此帖被zl39049979在2010-03-30 20:46重新编辑 ]
离线zl39049979
只看该作者 1楼 发表于: 2010-03-30
顶上~~~~~~~~~~~~~~~~~~~~~~~~
离线yangfanxing
只看该作者 2楼 发表于: 2010-03-30
ui(new Ui::QWidget)
==大约等价于
在构造中:ui = new Ui::QWidget;

etc...
PHPWind好恶心。。。不想看这种界面。。。
离线zl39049979
只看该作者 3楼 发表于: 2010-03-30
引用第2楼yangfanxing于2010-03-30 11:57发表的  :
ui(new Ui::QWidget)
==大约等价于
在构造中:ui = new Ui::QWidget;
etc...

已经找到资料了,3Q,这里有个效能问题,自定义的元素最好在初始化表初始化,而固有元素在构造里初始化
快速回复
限100 字节
 
上一个 下一个