最近,我遇到了一個小問題,它在QT中從cpp訪問qml中的複選框。所以問題很簡單:我有一個main.qml
文件,它有一個複選框,我想根據我在啓動應用程序時保存在QSettings中的配置將「checked
」屬性更新爲true或false。目前,我已經在應用程序啓動時成功地從cpp文件中加載QSettings的設置。那麼如何修改這個cpp文件中的「checked
」屬性?如何從QT中的.cpp訪問QML中的一個複選框?
我試過這個:http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html並使用findChild
函數,但它不起作用。
1),我把import <QtQuick>
放在cpp文件中,但是我的錯誤是QtQuick file can't be found
。
2),我改爲「import <QtQuick/QQuickView>
」。解決1),但有新的錯誤此行QObject* object = view.rootObject();
:
cannot initialize a variable of type 'QObject *' with an rvalue of type 'QQuickItem *`
3),我改變QObject* object = view.rootObject();
此行QQuickItem* object = view.rootObject();
和使用後QObject* acbox = object->findChild<QObject* >("acbox");
。 (acbox是該複選框的objectName)解決2)但得到新的錯誤:
Undefined symbols for architecture x86_64:
"QQuickView::setSource(QUrl const&)", referenced from:
ndn::TrayMenu::TrayMenu(QQmlContext*, ndn::Face&) in tray-menu.cpp.1.o
"QQuickView::QQuickView(QWindow*)", referenced from:
ndn::TrayMenu::TrayMenu(QQmlContext*, ndn::Face&) in tray-menu.cpp.1.o
"QQuickView::~QQuickView()", referenced from:
ndn::TrayMenu::TrayMenu(QQmlContext*, ndn::Face&) in tray-menu.cpp.1.o
"QQuickView::rootObject() const", referenced from:
ndn::TrayMenu::TrayMenu(QQmlContext*, ndn::Face&) in tray-menu.cpp.1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
任何人有任何建議嗎?提前致謝!