Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

QDeclarativeItem based on QML (Load QML file from QDeclarativeItem)

$
0
0
I’m create a QtQuick application. I try to download Qt 5.0 and install this, but when a add a QML file to resource file, resource file not compile (resource.cpp don’t does not appear in debug folder). Then I download the Qt 4.8.4 and all became well – resource file compile. Not the problem, although it can be considered as an error in Qt 5.0 (Platform Windows XP SP3, Visual Studio 2010 SP1, Qt Creator 2.6) I need to create hibryd from .cpp and .qml – some properties will be write in cpp, but view I want to create in QML because it is very convenient. I create MainWindow: import QtQuick 1.1 import ManagementButtonLib 1.0   Rectangle {     width: 800     height: 600       MouseArea {         anchors.fill: parent         property variant previousPosition         onPressed: {             previousPosition = Qt.point(mouseX, mouseY)         }         onPositionChanged: {             if (pressedButtons == Qt.LeftButton) {                 var dx = mouseX - previousPosition.x                 var dy = mouseY - previousPosition.y                 viewerWidget.pos = Qt.point(viewerWidget.pos.x + dx,                                             viewerWidget.pos.y + dy)             }         }     }       Rectangle {         id: viewArea         color: "#606060"         anchors.fill: parent         border.width: 1         border.color: "#000000"         transformOrigin: Item.Center         anchors.rightMargin: 1         anchors.bottomMargin: 1           ManagementButton         {             anchors.top: parent.top             anchors.topMargin: 6             anchors.right: parent.right             anchors.rightMargin: 6         }     } } then I create ManagementButton.h #ifndef MANAGEMENTBUTTON_H #define MANAGEMENTBUTTON_H   #include <QtCore> #include <QtDeclarative>   class ManagementButton : public QDeclarativeItem {     Q_OBJECT public:     ManagementButton(QDeclarativeItem *parent =0);     ~ManagementButton();     Q_ENUMS(buttonType)     enum buttonType {         Close = 0,         Minimize,         Browse }; };   #endif // MANAGEMENTBUTTON_H then the cpp file #include "ManagementButton.h"   ManagementButton::ManagementButton(QDeclarativeItem *parent) : QDeclarativeItem(parent) {     setCursor(Qt::PointingHandCursor);     setProperty("height", 30);     setProperty("width", 30);     QDeclarativeEngine engine;     QDeclarativeComponent component(&engine, QUrl("qrc:/Content/qml/SetupCollectionAgent/ManagementButton2.qml"));     QDeclarativeItem *qmlView = qobject_cast<QDeclarativeItem*>(component.create());     qmlView->setParentItem(this);   }   ManagementButton::~ManagementButton(){   } and main.cpp code for understaning: #include <QApplication> #include <QDeclarativeEngine> #include <QtDeclarative> #include <QtDeclarative/QDeclarativeContext> #include <QTextCodec> #include "qmlapplicationviewer.h" #include "managementButton.h"   Q_DECL_EXPORT int main(int argc, char *argv[]) {     QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8");     QTextCodec::setCodecForTr(utfcodec);     QTextCodec::setCodecForCStrings(utfcodec);       QScopedPointer<QApplication> app(createApplication(argc, argv));       QmlApplicationViewer viewer;     qmlRegisterType<ManagementButton>("ManagementButtonLib", 1, 0, "ManagementButton");     QDeclarativeContext *context = viewer.rootContext();     context->setContextProperty("viewerWidget", &viewer);     viewer.setWindowFlags(Qt::FramelessWindowHint);     viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);     viewer.setSource(QUrl("qrc:/Content/qml/SetupCollectionAgent/main.qml"));     viewer.showExpanded();         return app->exec(); } ManagementButton2.qml code: import QtQuick 1.1 Rectangle {         enabled: true         height: 30         width: 30         color: "#00000000"     Rectangle {         id: borderRectangle         color: "#00000000"         border.width: 0         border.color: "#CCCCCC"         anchors.fill: parent         anchors.rightMargin: 1         anchors.bottomMargin: 1           Image {             id: buttonImage             anchors.centerIn: parent             width: 16             height: 16             source: "qrc:/Images/Images/close.png"         }     }       MouseArea {         enabled: true         acceptedButtons: Qt.LeftButton         hoverEnabled: true         id: clickButtonArea         anchors.fill: parent         anchors.margins: 2         onEntered:         {               borderRectangle.border.width = 1             buttonImage.source = "qrc:/Images/Images/close_active.png"         }           onExited:         {             borderRectangle.border.width = 0             buttonImage.source = "qrc:/Images/Images/close.png"         }         onClicked: {             Qt.quit();         }     }       } When I start the project all ok, but MouseArea declarative in ManagementButton2.qml don’t work.

Viewing all articles
Browse latest Browse all 4972