Moh*_*lam 13 qt qt4 keypress qdialog qkeyevent
我使用这一行在我的对话框中禁用了Qt中的X按钮:
myDialog->setWindowFlags(Qt::Dialog | Qt::Desktop)
Run Code Online (Sandbox Code Playgroud)
但我无法使用此代码检测到Alt+ F4:
void myClass::keyPressEvent(QKeyEvent *e)
{
if ((e->key()==Qt::Key_F4) && (e->modifiers()==Qt::AltModifier))
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能在Qt中检测Alt+ F4或禁用它?
Arn*_*nce 26
按下会Alt+F4
导致关闭事件发送到您的顶级窗口.在您的窗口类中,您可以覆盖closeEvent()
以忽略它并阻止您的应用程序关闭.
void MainWindow::closeEvent(QCloseEvent * event)
{
event->ignore();
}
Run Code Online (Sandbox Code Playgroud)
如果您将关闭按钮(X)保持可见,此方法也会禁用它关闭您的应用程序.
这通常用于让应用程序有机会决定是否要关闭,或者通过显示"你确定吗?"来询问用户.消息框.
小智 6
下面的代码阻止在按下 Alt+F4、[X] 或 Escape 时关闭对话框,但不是通过调用 SomeDialog::close() 方法。
void SomeDialog::closeEvent(QCloseEvent *evt) {
evt->setAccepted( !evt->spontaneous() );
}
void SomeDialog::keyPressEvent(QKeyEvent *evt) {
// must be overridden but empty if the only you need is to prevent closing by Escape
}
Run Code Online (Sandbox Code Playgroud)
祝我们大家好运;)
归档时间: |
|
查看次数: |
11984 次 |
最近记录: |