自己写的小程序不想自己写边框,然后想捕捉原理的事件,最开始是重写QApplication event,发现关闭窗口触发的事件区分度不明显是appstatechanged和quit
后来分析了下,即使app捕捉到也拦截不了窗口关闭
然后重写QQuickView 的event时间,发现拦截到了close事件,把他忽略掉就阻止了窗口关闭,配合进行弹窗提示
代码:
FileIOPrivate是一个文件打开和关闭的类,msgbox也在里面现实的
ViewEventHandle::ViewEventHandle(QQuickView * parent):QQuickView(parent)
{
m_pFileIo = nullptr;
}
void ViewEventHandle::setFileIO(FileIOPrivate * in_pFileIo)
{
m_pFileIo = in_pFileIo;
}
bool ViewEventHandle::event(QEvent * event)
{
//qDebug() << "event.tyep :"<< event->type();
if(m_pFileIo && event->type() == QEvent::Close)
{
if(!m_pFileIo->openMsgBox())
{
event->ignore();
}
}
return QQuickView::event(event);
}