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析构了,他们才会销毁
------解决方案--------------------
这里用的是指针
------解决方案--------------------
这是指针
------解决方案--------------------
代码里用的是指针,函数结束指针变量被销毁,new出来的控件还在堆里,
delete一个QObject的子类,要调用xxxx->deleteLater();