blob: 7847608da355c46d8d4282bec2b109a9ebba1c83 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#ifndef EVENTFILTERS_H
#define EVENTFILTERS_H
#include <QEvent>
#include <QLineEdit>
class AOLineEditFilter : public QObject
{
Q_OBJECT
public:
bool preserve_selection = false;
protected:
bool eventFilter(QObject *obj, QEvent *event) override {
QLineEdit *lineEdit = qobject_cast<QLineEdit *>(obj);
if (event->type() == QEvent::FocusOut && lineEdit != nullptr && preserve_selection) { // lost focus
int start = lineEdit->selectionStart();
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
int len = lineEdit->selectionLength();
#else
int len = lineEdit->selectedText().length();
#endif
if (start != -1 && len != -1) {
lineEdit->setSelection(start, len);\
return true;
}
}
return false;
}
signals:
void double_clicked();
};
#endif // EVENTFILTERS_H
|