玉兔远程控制 0.1.0-bate6
载入中...
搜索中...
未找到
AutoCompleteLineEdit.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QLineEdit>
6#include <QStringList>
7#include <QKeyEvent>
8#include <QFocusEvent>
9#include <QTimer>
10
11class CAutoCompleteLineEdit : public QLineEdit
12{
13 Q_OBJECT
14public:
15 explicit CAutoCompleteLineEdit(QWidget *parent = nullptr);
16 explicit CAutoCompleteLineEdit(const QString &contents, QWidget *parent = nullptr);
17
18 void setCompletions(const QStringList &completions);
19
20 QColor GetSuggestionColor() const;
21 void SetSuggestionColor(const QColor &newSuggestionColor);
22 QColor GetSuggestionBackground() const;
23 void SetSuggestionBackground(const QColor &newSuggestionBackground);
24
25protected:
26 void keyPressEvent(QKeyEvent *event) override;
27 void focusInEvent(QFocusEvent *event) override;
28 void focusOutEvent(QFocusEvent *event) override;
29 virtual void paintEvent(QPaintEvent *event) override;
30
31private slots:
32 void updateCompletion();
33
34private:
35 QStringList m_completions;
36 QString m_currentSuggestion;
37
38 QColor m_suggestionColor;
39 QColor m_suggestionBackground;
40
41 QTimer m_updateTimer;
42
43 void initTimer();
44 void showSuggestion();
45 void hideSuggestion();
46 void acceptSuggestion();
47 QString findBestMatch(const QString &input) const;
48};
49