I’m trying to add a simple custom control using one of the code examples; but I must be doing something wrong when trying to adding it to a QtQuickControls based QML .
Output from running the app:
QQmlApplicationEngine failed to load component
qrc:/main.qml:78 Cannot assign to non-existent property “quickPluginCtrl”
Error: Your root item has to be a Window.
The qml editor kicks this out:
Invalid property name
Here is the code main.cpp:
#include <QtQml>
#include <QtQuick/QQuickView>
#include <QtCore/QString>
#include <QtGui/QGuiApplication>
#include "quickpluginctrl.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<quickPluginCtrl>("Charts", 1, 0, "quickPluginCtrl");
QQmlApplicationEngine engine(QUrl("qrc:/main.qml"));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
if ( !window ) {
qWarning("Error: Your root item has to be a Window.");
return -1;
}
window->show();
return app.exec();
}
quickpluginctrl.cpp
#include "quickpluginctrl.h"
quickPluginCtrl::quickPluginCtrl(QQuickItem *parent) :
QQuickItem(parent)
{
}
file quickpluginctrl.h
#ifndef QUICKPLUGINCTRL_H
#define QUICKPLUGINCTRL_H
#include <QQuickItem>
class quickPluginCtrl : public QQuickItem
{
Q_OBJECT
public:
explicit quickPluginCtrl(QQuickItem *parent = 0);
signals:
public slots:
};
#endif // QUICKPLUGINCTRL_H
main.qml
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.0
import Charts 1.0
ApplicationWindow {
title: "Basic layouts"
property int margin: 11
width: mainLayout.implicitWidth + 2 * margin
height: mainLayout.implicitHeight + 2 * margin
minimumWidth: mainLayout.Layout.minimumWidth + 2 * margin
minimumHeight: mainLayout.Layout.minimumHeight + 2 * margin
ColumnLayout {
id: mainLayout
anchors.fill: parent
anchors.margins: margin
GroupBox {
id: rowBox
title: "Row layout"
Layout.fillWidth: true
RowLayout {
id: rowLayout
anchors.fill: parent
TextField {
placeholderText: "This wants to grow horizontally"
Layout.fillWidth: true
}
Button {
text: "Button"
}
}
}
GroupBox {
id: gridBox
title: "Grid layout"
Layout.fillWidth: true
GridLayout {
id: gridLayout
rows: 3
flow: GridLayout.TopToBottom
anchors.fill: parent
Label { text: "Line 1" }
Label { text: "Line 2" }
Label { text: "Line 3" }
TextField { }
TextField { }
TextField { }
TextArea {
text: "This widget spans over three rows in the GridLayout.\n"
+ "All items in the GridLayout are implicitly positioned from top to bottom."
Layout.rowSpan: 3
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
TextArea {
id: t3
text: "This fills the whole cell"
Layout.minimumHeight: 30
Layout.fillHeight: true
Layout.fillWidth: true
}
Item {
id:tim
Layout.minimumHeight: 150
Layout.fillHeight: true
Layout.fillWidth: true
quickPluginCtrl
{
width: 100
height: 100;
id: ctrl
}
Text {
anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 }
text: "timmm"
}
}
ProgressBar {
id: progress_bar1
x: 106
y: 356
}
Slider {
id: slider__horizontal_1
x: 106
y: 385
}
}
}
↧