Qt5学习(2)

1.学习了qt quick application

这是一种跟application不同的设计方式。主要就是靠“拖拖拽拽”,然后设置属性(颜色,大小),布局(margins等),然后要注意控件的从属关系。总体来说操作简单,但是花样较少。

2.学习了将QML object暴露给C++

书上的例子:

头文件

#ifndef N_H
#define N_H

#include<QObject>
#include<QDebug>

class N:public QObject
{Q_OBJECT
    public:
    QObject *myObject;
    //explicit MyLabel(QObject *parent = 0);如果加上这一句就编译错误,不知道什么原因
    Q_INVOKABLE void setMyObject(QObject* obj);
};

#endif // N_H

.cpp文件

 void N::setMyObject(QObject* obj)
    { // Set the object pointer
      myObject = obj;
      myObject->setProperty("visible", QVariant(true));
     myObject->setProperty("text", QVariant("Bye bye world!"));

}

然后main文件:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include<QtQml>
#include"n.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    qmlRegisterType<N>("NN", 1, 0, "N");
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

最后是main.qml内:

import QtQuick 2.2
import QtQuick.Window 2.1
import NN 1.0

Window {
    visible: true
    width: 360
    height: 360

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
    N
    {
        id:littleN;
    }
    Text {
        id:sha;
        text: qsTr("Hello World")
        anchors.centerIn: parent
        Component.onCompleted:
        {
         littleN.setMyObject(sha);
        }
    }
}

除了这样设置属性之外,还介绍了函数的调用,可是没有看懂。。。那就以后再看吧:)

也就是这个函数的用法:

QMetaObject::invokeMethod

 

posted @ 2018-06-23 15:38  sgggr  阅读(159)  评论(0编辑  收藏  举报