/*! Keyboard 键盘根据输入部件焦点进入和离开显示键盘,键盘将现实到聚焦部件的最等曾的父窗口上.根据输入控件位置显示在最顶部和最底部. * 用法: 在mainn函数加入定义即可 Keyboard k; */ #ifndef KEYBOARD_H #define KEYBOARD_H #include class QLabel; class KeyButton; class PinyinBar; class Keyboard : public QWidget { Q_OBJECT public: explicit Keyboard(QWidget *parent = 0); ~Keyboard(); protected: void resizeWidget(QWidget*w); bool hasInput(QWidget *w); bool eventFilter(QObject *watched, QEvent *event)override; void foucsChange(QWidget *old, QWidget *now); void createKeys(); void resetKey(); QString getKey(Qt::Key key); void hideEvent(QHideEvent *event); private slots: void handleKey(); void clearpinyin(); void addSearch(const QString &s=QString()); void textChose(const QString &text, int index); private: QList m_buttons; QWidget *m_inputWidget; QStringList m_list; PinyinBar *m_bar; int m_candidates; int m_number; int m_type; bool m_shift; bool m_upper; }; #endif // KEYBOARD_H