本文介绍Qt君最近编写的一个Qt键盘,该键盘主要功能有大小写切换,中英文切换(后续实现)数字输入,符号输入等基本功能,未来还会支持换肤,手写功能。
键盘演示
键盘界面
目录结构
class AbstractKeyboard : public QWidget
{
Q_OBJECT
public:
AbstractKeyboard(QWidget *parent = 0);
~AbstractKeyboard();
const QString name();
void setName(const QString &name);
public slots:
virtual void update(const QString &text);
void onKeyPressed(int key, QString value);
signals:
void keyPressed(int key, QString value);
};
class Keyboard : public AbstractKeyboard
{
Q_OBJECT
public:
Keyboard(QWidget *parent = NULL);
protected:
void resizeEvent(QResizeEvent *e);
private slots:
void switchCapsLock();
void switchSpecialChar();
void switchEnOrCh();
};
class KeyButton : public QPushButton
{
Q_OBJECT
public:
enum Type { Auto = 0, LowerCase, UpperCase, SpecialChar };
struct Mode {
int key; /* Qt::Key */
QString value; /* text */
QString display; /* display text */
Type type; /* default: Auto */
};
KeyButton(const QList<Mode> modes = QList<Mode>(), QWidget *parent = NULL);
Mode mode();
void onReponse(const QObject* receiverObj, const QString &receiver);
void switchCapsLock();
void switchSpecialChar();
void switching(); /* Cycle switch. */
signals:
void pressed(int key, QString value);
};
键盘界面
https://github.com/aeagean/QtKeyboard