qml含边框程序如何拦截窗口大小和关闭事件(右上角的X)

自己写的小程序不想自己写边框,然后想捕捉原理的事件,最开始是重写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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值