2013-01-07 30 views
6

के साथ .qml पर एक क्यूटी क्विक 2 एक्सटेंशन प्लगइन का उपयोग कैसे करें I QtCreator में प्रोजेक्ट मंदिर "लाइब्रेरीज़/क्यूटी क्विक 2 एक्सटेंशन प्लगइन" का उपयोग कर Qt5/QML साझा लाइब्रेरी के रूप में एक परीक्षण प्लगइन बना रहा था। मेरा विकास वातावरण Qt-5.0.0 और QtCreator-2.6 के साथ लिनक्स है (विवरण नीचे में संलग्न है)।qmlscene (या qmlviewer5)

(सार पर) स्रोत फ़ाइलें: https://gist.github.com/4467883

स्रोत फ़ाइलों डिफ़ॉल्ट कोई भी परिवर्तन बिना उत्पन्न कर रहे हैं। प्रोजेक्ट का नाम "शीर्षक रहित" है, यूरी "com.mycompany.mycomponents" है और ऑब्जेक्ट क्लास-नाम "मायइटम" है। एसआरसीडीआईआर के रूप में "/ tmp/untitled" में स्रोत फ़ाइलें।

और के रूप में उत्पादन पुस्तकालय फ़ाइल "libuntitled.so", "qmldir" और कुछ वस्तु "/ tmp/शीर्षकहीन-निर्माण" में फ़ाइलों को एक DESTDIR के रूप में इसे बनाने।

$ ls /tmp/untitled-build 
Makefile libuntitled.so moc_myitem.cpp 
moc_myitem.o moc_untitled_plugin.cpp moc_untitled_plugin.o myitem.o 
qmldir untitled_plugin.o 

लेकिन, मुझे qmlscene कमांड के साथ परीक्षण QML स्रोत के रूप में "/tmp/test/test.qml" में पुस्तकालय उपयोग नहीं कर सकते।

$ mkdir /tmp/test; cd /tmp/test 
$ vim test.qml 

"test.qml" (सार पर): https://gist.github.com/4474422

$ qmlscene test.qml 

यह असफल रहा है, और QML_IMPORT_TRACE लॉग है:

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml" 
QQmlImportDatabase::addImportPath: "/usr/bin" 
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport 
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as "" 
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir" 
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so" 
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed 

और कोशिश "मैं" विकल्प:

$ qmlscene test.qml -I /tmp/untitled-build 

यह असफल भी विफल है। लॉग ऑन है:

$ vim /tmp/test/qmldir 

"tmp/परीक्षण/qmldir" (सार पर): https://gist.github.com/4474497

है कि असफल

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml" 
QQmlImportDatabase::addImportPath: "/usr/bin" 
QQmlImportDatabase::addImportPath: "/tmp/untitled-build" 
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport 
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as "" 
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir" 
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so" 
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed 

और के साथ "/ tmp/परीक्षण/qmldir" की कोशिश । लॉग इन करें:

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml" 
QQmlImportDatabase::addImportPath: "/usr/bin" 
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport 
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/tmp/test/qmldir" 
QQmlImportDatabase::importPlugin: ".tmp.test" from "/tmp/untitled-build/libuntitled.so" 
Module '.tmp.test' does not contain a module identifier directive - it cannot be protected from external registrations. 
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as "" 
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir" 
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so" 
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed 

कैसे पुस्तकालय का उपयोग करने के परीक्षण .qml ("/ tmp/test.qml") qmlscene (या qmlviewer5) के साथ में ("/ tmp/शीर्षकहीन-निर्माण/libuntitled.so")?

पर्यावरण विवरण (openSUSE-12 पर आधारित।2):

$ uname -a 
Linux LH-MAIN 3.4.11-2.16-desktop #1 SMP PREEMPT Wed Sep 26 17:05:00 UTC 2012 (259fc87) x86_64 x86_64 x86_64 GNU/Linux 
$ g++ --version | head -n1 
g++ (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773] 
$ qmake -v    
QMake version 3.0 
Using Qt version 5.0.0 in /usr/lib64 
$ qtcreator -version 2>&1 >/dev/null | grep "^[^ ].*" | head -n1 
Qt Creator 2.6.1 based on Qt 5.0.0 
$ qmlviewer5 -v  
Qml debugging is enabled. Only use this in a safe environment! 
Qt QML Viewer version 5.0.0 

संदर्भ:

  1. http://doc-snapshot.qt-project.org/5.0/qtcore/plugins-howto.html
  2. http://doc-snapshot.qt-project.org/5.0/qtcore/qtplugin.html
  3. http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-qmldir.html
  4. http://qt-project.org/doc/qt-5.0/qtqml/examples-quick-tutorials-extending-chapter6-plugins.html

उत्तर

4

कोशिश डाल करने के लिए अपने plugin.so और 01 की तरह एक फ़ोल्डर मेंफ़ाइल:

- myproject 
    - imports 
     - com 
      - mycompany 
       - mycomponents 
        - libuntitled.so 
        - qmldir 

तो QML2_IMPORT_PATH वातावरण चर को imports निर्देशिका जोड़ें। export QML2_IMPORT_PATH=/path/to/myproject/imports यह मेरे लिनक्स बॉक्स पर मेरे लिए काम करता था।

+0

बहुत बहुत धन्यवाद! महत्वपूर्ण बिंदु हैं (1) पर्यावरण चर 'QML2_IMPORT_PATH' सेट करें और (2) घटक यूरी से जुड़ी आयात निर्देशिका वृक्ष संरचना सेट करें। यह मेरे पर्यावरण पर चल सकता है। –