Qml全局按键

作者: zhengtianzuo | 来源:发表于2018-11-29 20:33 被阅读0次

创建一个c++类 对事件进行监听

bool QmlKey::eventFilter(QObject *watched, QEvent *event)
{
    if (event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
        if (keyEvent->key() == Qt::Key_Backspace)
        {
            emit sKeyBackPress();
            return(true);
        }
    }
    if (event->type() == QEvent::KeyRelease)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
        if (keyEvent->key() == Qt::Key_Backspace)
        {
            emit sKeyBackRelease();
            return(true);
        }
    }

    return QObject::eventFilter(watched, event);
}

注册并连接信号槽

QmlKey qmlKey;
    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("qmlKey", &qmlKey);
    engine.load(QUrl(QLatin1String("qrc:/main.qml")));
    QObject *root = engine.rootObjects()[0];
    root->installEventFilter(&qmlKey);
    QObject::connect(&qmlKey, SIGNAL(sKeyBackPress()), root, SLOT(onSKeyBackPress()));
    QObject::connect(&qmlKey, SIGNAL(sKeyBackRelease()), root, SLOT(onSKeyBackRelease()));

Qml中信号槽:

    function onSKeyBackPress(){
        label.text = qsTr("按下了Backspace")
    }

    function onSKeyBackRelease(){
        label.text = qsTr("松开了Backspace")
    }
show.gif

需要完整代码请访问QtQuickExamples

相关文章

  • Qml全局按键

    创建一个c++类 对事件进行监听 注册并连接信号槽 Qml中信号槽: 需要完整代码请访问QtQuickExamples

  • qml全局变量定义建议

    从C++导入到qml的全局变量和qml定义变量或许有些混淆,使用下列建议或许可以解决全局变量混淆的问题。   定义...

  • GO语言Robotgo学习-事件操作(6)

    AddEvent,添加全局事件监听 AddEvent(按键或者鼠标操作)支持的按键有数字字母等按键,支持的功能键从...

  • Jquery绑定按键事件

    1、全局判断按键 2、给某个元素 3、组合按键的应用 4、按键的分类按键可以分为“实键”和“虚键” 实键可以理解为...

  • Android Studio Keymap-Mac

    mac上按键符号 (一)查找/查看相关 搜索任意内容 当前文件查找/替换 全局查找/替换 全局搜索类 全局搜索类/...

  • Java 监听window 全局按键,发送模拟按键

    首先需要准备三个文件jintellitype-1.3.9.jarJIntellitype.dllJIntellit...

  • Record one usage of 'qml signal'

    ArMap.qml ArCanvas.qml

  • QML中使用全局变量

    全局变量,顾名思义就是在程序中到处都能使用的变量。这在一定程度上违背了“模块化设计”这个思想。在笔者刚接触编程的时...

  • QML Loader使用

    能在qml组件需要的时候再创建,即延迟创建QML的时间,类似ios懒加载 main.qml page1.qml p...

  • Vue-自定义指令

    一、自定义全局按键修饰符 二、使用 Vue.directive()定义全局的指令其中:参数1——指令的名称,注意:...

网友评论

    本文标题:Qml全局按键

    本文链接:https://www.haomeiwen.com/subject/eflqcqtx.html