回复: 怎么捕捉点击"X"试图关闭窗口的信号
#6 [ediwon 08-22 13:57]
QDialog默认closeEvent处理方式是hide()
而QWidget如果想让点击X不关掉,而hide()的话。
重写
virtual closeEvent(QCloseEvent *event)
{
this->hide();
}
ps:
ziding
说的ignore()只会使得X无效而并达不到hide效果
#7 [lj_0212 08-22 14:26]
引用第3楼igoo于2006-07-26 15:51发表的“”:
但是我经过实验发现
当子窗口接收到closeenvent的时候,该窗口的销毁好像已经没法挽回了
这个函数的作用好像就是为了给窗口清楚一些资源的机会,而不是用来干其他的目的
如果能有windows中类似WM_CLOSE之类的消息就好了;如果在qt里面直接拦截WM_CLOSE
.......
使用有问题。
void MyWidget::closeEvent(QCloseEvent *e)
{
...........
QWidget::closeEvent(e);
...........
}
不要加入带有颜色的这行。 只加入自己的代码就行了。
#8 [dannyt 08-24 17:18]
我最近也碰到这个问题,不希望用户用窗口管理器把我的dialog关掉。
按照楼上ediwon的思路,我重载了QDialog::closeEvent(QCloseEvent *e),避免了X试图关闭我的窗口。
可是还有一个问题,我在我的对话框(继承自QDialog)中按Esc键的时候,还是会把dialog给关掉,有没有办法把这个也截获掉呢?
大家有没有什么简单的方法呢?小弟先谢过了!
#9 [ediwon 08-25 13:51]
void Window::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape)
event->ignore();
}