1、子类化基类为QProgressDialog,例如为:MyProgressDialog,并重载even事件,头文件h:
#ifndef MYPROGRESSDIALOG_H
#define MYPROGRESSDIALOG_H
#include <QProgressDialog>
#include <QObject>
#include <QWidget>
#include <QtDebug>
#include <QKeyEvent>
class MyProgressDialog : public QProgressDialog
{
Q_OBJECT
public:
MyProgressDialog(QWidget *parent = 0);
bool event(QEvent *event);
};
#endif // MYPROGRESSDIALOG_H
2、子类cpp实现:(这里仅屏蔽Esc,空格键类似,自己添加即可)
#include "myprogressdialog.h"
MyProgressDialog::MyProgressDialog(QWidget *parent) :QProgressDialog(parent)
{
}
bool MyProgressDialog::event(QEvent *event) // 事件
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
if(keyEvent && keyEvent->key() == Qt::Key_Escape)
{
qDebug() <<keyEvent->text();
qDebug() <<event->type();
keyEvent->accept();
retu

本文介绍了如何在Qt中创建一个自定义的进度对话框MyProgressDialog,重写event方法以屏蔽Esc键并处理QEvent::ShortcutOverride。通过实例展示了如何在接收到QEvent::Key_Escape时,正确处理并防止关闭对话框。
最低0.47元/天 解锁文章
8654

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



