关于QML监控系统粘贴板的问题

本文介绍了一种在Android PDA设备上实现条码扫描的方法,通过监听剪贴板的变化来捕捉扫描结果,并将其绑定到应用程序中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为最近要搞android的PDA的物理扫描枪的程序,PDA扫到的条码会直接填入输入框,尝试了多种方法无果后最终尝试用监控粘贴板变化的方式。 

代码如下:


#ifndef QCLIPBOARDPROXY_H
#define QCLIPBOARDPROXY_H

#include <QObject>

class QClipboard;

class QClipboardproxy : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString text READ text NOTIFY textChanged)

public:
    explicit QClipboardproxy(QClipboard *c);

    QString text();

signals:
    void textChanged();

public slots:
    void debugMyMsg();

private:
    QClipboard* clipboard;
};

#endif // QCLIPBOARDPROXY_H

QClipboardproxy.cpp

#include "QClipboardproxy.h"

#include <QClipboard>
#include <QDebug>

QClipboardproxy::QClipboardproxy(QClipboard *c):clipboard(c)
{
    connect(c, &QClipboard::dataChanged, this, &QClipboardproxy::textChanged);
    connect(c, &QClipboard::dataChanged, this, &QClipboardproxy::debugMyMsg);
}

QString QClipboardproxy::text()
{
    return clipboard->text();
}

void QClipboardproxy::debugMyMsg()
{
    qDebug() << "get the clipboard change";
}

main.cpp

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    //ready engin
    QQmlApplicationEngine engine;

    //set var
    engine.rootContext()->setContextProperty("g_proxy",  new QClipboardproxy());

    //show
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    //step 1

    //step 2
    g_Dev_WebService->initDev();

    return app.exec();
}

main.qml


直接绑定就OK,例如 

Text{

        text: g_proxy.text

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值