例如希望QMdiArea中的QSubWindow被关闭时,widget不被删除
QMdiArea的派生
class MyArea : public QMdiArea
{
virtual eventFiter(QObject* watched, QEvent* event)
{
if(watched.inherits("QSubWindow"))
{
if(event.type() == Qt::close)
{
this->remove((QWidgt*)watched);//并未被删除
return true;
}
}
}
return QMdiArea::eventFilter(watched,event);
}
QMdiSubWindow的派生
class QMdiSubWindow: public QMdiArea
{
virtual void closeEvent(QCloseEvent* event)
{
this->mdiArea().remove(this);
}
}
文章讨论了如何在QMdiArea的派生类中,当QSubWindow接收到关闭事件时,阻止QMdiArea默认删除子窗口的行为。通过重写eventFilter和closeEvent方法,确保widget在特定条件下不被删除。
1690

被折叠的 条评论
为什么被折叠?



