当前位置: 代码迷 >> QT开发 >> 关于QT的一个基础的对象销毁的有关问题
  详细解决方案

关于QT的一个基础的对象销毁的有关问题

热度:87   发布时间:2016-04-25 03:51:13.0
关于QT的一个基础的对象销毁的问题!
DragWidget::DragWidget(QWidget *parent)
    : QFrame(parent)
{
    setMinimumSize(200, 200);
    setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
    setAcceptDrops(true);

    QLabel *boatIcon = new QLabel(this);
    boatIcon->setPixmap(QPixmap(":/images/boat.png"));
    boatIcon->move(10, 10);
    boatIcon->show();
    boatIcon->setAttribute(Qt::WA_DeleteOnClose);

    QLabel *carIcon = new QLabel(this);
    carIcon->setPixmap(QPixmap(":/images/car.png"));
    carIcon->move(100, 10);
    carIcon->show();
    carIcon->setAttribute(Qt::WA_DeleteOnClose);

    QLabel *houseIcon = new QLabel(this);
    houseIcon->setPixmap(QPixmap(":/images/house.png"));
    houseIcon->move(10, 80);
    houseIcon->show();
    houseIcon->setAttribute(Qt::WA_DeleteOnClose);
}

上面这段代码是QT Example里面的一段代码, 像上面这里面QLabel在这段代码结束的时候,应该是已经被销毁了的吧! 为什么show()出来的图片还在?
而且QLabel *child = static_cast<QLabel*>(childAt(event->pos()));这行代码也可以得到已经销毁的QLable对象,这是为什么?
Qt

------解决方案--------------------
DragWidget析构了,他们才会销毁
------解决方案--------------------
这里用的是指针
------解决方案--------------------
引用:
Quote: 引用:

DragWidget析构了,他们才会销毁

局部变量不是函数结束时候销毁?

这是指针
------解决方案--------------------
代码里用的是指针,函数结束指针变量被销毁,new出来的控件还在堆里,
delete一个QObject的子类,要调用xxxx->deleteLater();
  相关解决方案