gui: Add GUIUtil::ItemDelegate with keyEscapePressed signal

This commit is contained in:
João Barbosa 2018-07-30 22:44:18 +01:00
parent 84d5a6210c
commit f7a553177d
2 changed files with 24 additions and 0 deletions

View file

@ -49,6 +49,7 @@
#include <QDoubleValidator> #include <QDoubleValidator>
#include <QFileDialog> #include <QFileDialog>
#include <QFont> #include <QFont>
#include <QKeyEvent>
#include <QLineEdit> #include <QLineEdit>
#include <QSettings> #include <QSettings>
#include <QTextDocument> // for Qt::mightBeRichText #include <QTextDocument> // for Qt::mightBeRichText
@ -927,4 +928,14 @@ void ClickableProgressBar::mouseReleaseEvent(QMouseEvent *event)
Q_EMIT clicked(event->pos()); Q_EMIT clicked(event->pos());
} }
bool ItemDelegate::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
if (static_cast<QKeyEvent*>(event)->key() == Qt::Key_Escape) {
Q_EMIT keyEscapePressed();
}
}
return QItemDelegate::eventFilter(object, event);
}
} // namespace GUIUtil } // namespace GUIUtil

View file

@ -10,6 +10,7 @@
#include <QEvent> #include <QEvent>
#include <QHeaderView> #include <QHeaderView>
#include <QItemDelegate>
#include <QMessageBox> #include <QMessageBox>
#include <QObject> #include <QObject>
#include <QProgressBar> #include <QProgressBar>
@ -232,6 +233,18 @@ namespace GUIUtil
typedef ClickableProgressBar ProgressBar; typedef ClickableProgressBar ProgressBar;
class ItemDelegate : public QItemDelegate
{
Q_OBJECT
public:
ItemDelegate(QObject* parent) : QItemDelegate(parent) {}
Q_SIGNALS:
void keyEscapePressed();
private:
bool eventFilter(QObject *object, QEvent *event);
};
} // namespace GUIUtil } // namespace GUIUtil
#endif // BITCOIN_QT_GUIUTIL_H #endif // BITCOIN_QT_GUIUTIL_H