我正在嘗試使剪貼板可用於某些QML代碼。將QClipboard傳遞給QML
傳遞剪貼板對象似乎工作,但我不能調用它的方法。
下面是一個QClipboard在C++中正常工作的例子,被傳遞給QML,在調試輸出中它仍然是一個QClipboard對象,但是失去了它的功能。
的main.cpp
#include <QApplication>
#include <QClipboard>
#include <QQmlApplicationEngine>
#include <qqmlcontext.h>
#include <QtQml>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("clipboard", QApplication::clipboard());
qDebug() << QApplication::clipboard()->text(); // This correctly prints the copied text
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
main.qml
import QtQuick 2.5
import QtQuick.Controls 1.3
ApplicationWindow {
visible: true
MouseArea {
acceptedButtons: Qt.MiddleButton
anchors.fill: parent
onClicked: {
console.log(clipboard)
console.log(clipboard.getText())
}
}
}
qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
test.pro
TEMPLATE = app
VERSION = 1.0
QT += qml widgets gui
QMAKE_LFLAGS += -Wl,--as-needed
SOURCES += main.cpp
RESOURCES += qml.qrc
你甚至可以在代理上創建文本屬性並獲得綁定的工作。我會提出一個編輯 –
標記這個作爲答案,因爲它解釋了爲什麼它不直接工作。 – LtWorf