QT:键盘事件

来源:互联网 发布:京麦工作台和淘宝助理 编辑:程序博客网 时间:2024/05/22 06:25
键盘事件

QKeyEvent 按键按下
#include <QKeyEvent >
// 按键按下 slot
void QWidget::keyPressEvent (QKeyEvent * event) [virtual];
// 按键抬起 slot
void QWidget::keyReleaseEvent (QKeyEvent * event) [virtual];
int key () const; // 按键代码 return the code of the key,【enum Qt::Key】
QString text () const; // 按键文本
quint32 nativeScanCode () const; // 扫描键码
quint32 nativeVirtualKey() const; // 虚拟键码 <---> ASCII码

《案例》按键测试
工程名:Keyboard
类名:KeyboardDialog

/* 按键测试 - 代码演示 */

// KeyboardDialog.h#include "KeyboardDialog.h"#include "ui_KeyboardDialog.h"KeyboardDialog::KeyboardDialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::KeyboardDialog){    ui->setupUi(this);}KeyboardDialog::~KeyboardDialog(){    delete ui;}void KeyboardDialog::keyPressEvent (QKeyEvent * event) {    printKeyEvent ("按下", event);}void KeyboardDialog::keyReleaseEvent (QKeyEvent * event) {    printKeyEvent ("抬起", event);}// 打印按键信息void KeyboardDialog::printKeyEvent (const QString& strAction, QKeyEvent* event) {    qDebug () << strAction;    qDebug ("按键代码:%d", event->key ());    qDebug ("扫描键码:%d", event->nativeScanCode ());    qDebug ("虚拟键码:%d", event->nativeVirtualKey ());    qDebug () << event->text (); // 按键文本(功能键无文本值)}

// KeyboardDialog.cpp#ifndef KEYBOARDDIALOG_H#define KEYBOARDDIALOG_H#include <QDialog>#include <QKeyEvent>#include <QDebug>namespace Ui {class KeyboardDialog;}class KeyboardDialog : public QDialog{    Q_OBJECTpublic:    explicit KeyboardDialog(QWidget *parent = 0);    ~KeyboardDialog();private:    void keyPressEvent (QKeyEvent *);    void keyReleaseEvent (QKeyEvent *);    // 打印按键信息    void printKeyEvent (const QString& strAction, QKeyEvent* event);private:    Ui::KeyboardDialog *ui;};#endif // KEYBOARDDIALOG_H

// main.cpp#include "KeyboardDialog.h"#include <QApplication>int main(int argc, char *argv[]){    QApplication a(argc, argv);    KeyboardDialog w;    w.show();    return a.exec();}

0 0
原创粉丝点击