[SOLVED] How to displaying QML file in widget
-
Hello ;
Who can help me to show a qml file on my widget
after run qml file show for me but qml content no ! where is problem ?This is Widget code for show my qml file
@
QDeclarativeView *qmlView = new QDeclarativeView;
qmlView->setSource(QUrl::fromLocalFile("kk.qml"));
qmlView->show();
ui->gridLayoutQ->addWidget(qmlView);
@and this is qml file :
@
import QtQuick 2.0Rectangle {
width: 100
height: 62Text { id: text1 x: 36 y: 24 text: qsTr("<b>Text</b>") font.pixelSize: 12 }
}
@
@
#-------------------------------------------------Project created by QtCreator 2014-05-07T10:02:40
#-------------------------------------------------
QT += core gui qml quick declarative
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled24
TEMPLATE = appSOURCES += main.cpp
mainwindow.cppHEADERS += mainwindow.h
FORMS += mainwindow.ui
OTHER_FILES +=
kk.qml@
Qt version : 5.2 and 5.3
Os : Linux / Windows -
Hi,
QDeclarativeView is for Qt Quick 1.
For Qt Quick 2, you have 2 options:
- Use QQuickView and QWidget::createWindowContainer(): https://blog.qt.digia.com/blog/2013/02/19/introducing-qwidgetcreatewindowcontainer/ (Requires Qt 5.1 and above)
- Use "QQuickWidget":http://doc-snapshot.qt-project.org/qt5-release/qquickwidget.html (Requires Qt 5.3 and above)
[quote author="Kamb!z" date="1399448588"]
QT += core gui qml quick declarative[/quote]Remove "declarative". That is for Qt Quick 1 only. -
[quote author="JKSH" date="1399449048"]Hi,
QDeclarativeView is for Qt Quick 1.
For Qt Quick 2, you have 2 options:
- Use QQuickView and QWidget::createWindowContainer(): https://blog.qt.digia.com/blog/2013/02/19/introducing-qwidgetcreatewindowcontainer/ (Requires Qt 5.1 and above)
- Use "QQuickWidget":http://doc-snapshot.qt-project.org/qt5-release/qquickwidget.html (Requires Qt 5.3 and above)
[quote author="Kamb!z" date="1399448588"]
QT += core gui qml quick declarative[/quote]Remove "declarative". That is for Qt Quick 1 only.[/quote]Hi again and thank you for reply but after run just show black screen ! why ?
code :
@
QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("kk.qml"));
view->show();
@check this screen shoot please : http://persianupload.com/kleeja/do.php?imgf=139945002257841.jpg
-
And again after remove declarative ...
And this : http://persianupload.com/kleeja/do.php?imgf=139945042555611.jpg
Why content is empty !!!??
-
Are you using an OpenGL version of Qt, or an ANGLE version?
Does your graphics card support OpenGL 2.0?
In Qt Creator, start a new Qt Quick project:
File -> New File or Project... -> Applications -> Qt Quick Application -> Qt Quick 2.2
Click "Run. What do you see?
-
[quote author="JKSH" date="1399458692"]# Are you using an OpenGL version of Qt, or an ANGLE version?
Does your graphics card support OpenGL 2.0?
In Qt Creator, start a new Qt Quick project:
File -> New File or Project... -> Applications -> Qt Quick Application -> Qt Quick 2.2
Click "Run. What do you see?
[/quote]
It's Angle version , not OpenGL
About My GPU : (AMD Readon HD 6670) OPENGL 4.1 SUPPORT : Yes
In Qt Creator I have Qt Quick 2.2
After create and run this is result : http://persianupload.com/kleeja/do.php?imgf=13994592497651.jpg -
[quote author="Kamb!z" date="1399459302"]After create and run this is result : http://persianupload.com/kleeja/do.php?imgf=13994592497651.jpg[/quote]Good, it's working :)
If you still want to use QWidgets, add "QT += widgets" to your untitled26.pro and try QQuickView/QQuickWidget again.
EDIT: What version of Qt Creator are you using? Your project looks different
-
[quote author="JKSH" date="1399459696"][quote author="Kamb!z" date="1399459302"]After create and run this is result : http://persianupload.com/kleeja/do.php?imgf=13994592497651.jpg[/quote]Good, it's working :)
If you still want to use QWidgets, add "QT += widgets" to your untitled26.pro and try QQuickView/QQuickWidget again.
EDIT: What version of Qt Creator are you using? Your project looks different[/quote]
Unfortunately doesn't work ! :( content of QML file is a string ("Hello world") but isn't show.
See : http://persianupload.com/kleeja/do.php?imgf=139946053737491.jpg
and my project : http://persianupload.com/kleeja/do.php?filename=139946053748452.zip
-
Your URL is wrong.
Look inside main.cpp -- the correct URL is written there.
-
[quote author="JKSH" date="1399462036"]Your URL is wrong.
Look inside main.cpp -- the correct URL is written there.[/quote]
This is main address of qml file : qrc:///qml/main.qml
view->setSource(QUrl::fromLocalFile("qrc:///qml/main.qml"));
can you check my sample of code ! this is : http://persianupload.com/kleeja/do.php?filename=139946053748452.zip
-
[quote author="Kamb!z" date="1399462538"]view->setSource(QUrl::fromLocalFile("qrc:///qml/main.qml"));[/quote]You shouldn't use QUrl::fromLocalFile(), because items in QRC files are not local files. See main.cpp for the correct way of calling QUrl.
Also, open main.qml and change Window {} to Rectangle {} -- that will make things easier for you.
-
Not working for me again ! Can you give me a sample ? please !
I want to compare your project with mine. -
@
// mainwindow.cpp
// Change this...
QUrl::fromLocalFile("qrc:///qml/main.qml")// ...to this:
QUrl(QStringLiteral("qrc:///qml/main.qml"))
@@
// main.qml
// Change this...
Window {
...// ...to this:
Rectangle {
@ -
[quote author="JKSH" date="1399468987"]@
// mainwindow.cpp
// Change this...
QUrl::fromLocalFile("qrc:///qml/main.qml")// ...to this:
QUrl(QStringLiteral("qrc:///qml/main.qml"))
@@
// main.qml
// Change this...
Window {
...// ...to this:
Rectangle {
@[/quote]Oh yes !!! I understand now ! thank you JKSH :)
-
You're welcome :) Happy coding!