QML编程 基础 小白

QT += quick   //添加quick模块
QQuickView //视图 用来链接QML和程序

0

QQuickView viewer;//Quick视图

    viewer.setSource(QUrl(QLatin1String("qrc:///qml/qmlvideofx/Main.qml")));//加载视图QML文件
 viewer.setResizeMode(QQuickView::SizeRootObjectToView);//视图将自动将根项调整为视图的大小
 viewer.show();//显示

QQmlApplicationEngine //qml引擎 用来链接程序和qml文件

QT += qml

QQmlApplicationEngine ::load(QUrl(QLatin1String(“qrc:///qml/qmlvideofx/Main.qml”)));//加载QML文件(需链接信号与曹)

[signal] void QQmlApplicationEngine::objectCreated(QObject *object, const QUrl &url)

该信号在对象完成加载时发出。如果加载成功,对象包含一个指向加载对象的指针,否则指针为空。
还提供了对象来自的组件的url。

注意:如果组件的路径是作为包含相对路径的QString提供的,那么url将包含文件的完全解析路径。-


如果要在QML中调用c++中得函数 那么在定义函数时须在返回值前面添加一个标记 Q_INVOKABLE(注册一个方法到QML) 或者是qt中得槽函数

将c++对象作为属性注册到QML

  1. #include<QQmlContext>//上下文允许将数据公开给由QML引擎实例化的QML组件。
    
    
    QQuickView viewer;//视图
    QQmlContext *x=view.rootContext();//返回上下文里的根指针QQmlContext类型
    xxx data;//自定义类对象
    x->setContextProperty("在QML中访问的自定义对象名 xxx",&data);//注册一个对象到QML    设置属性将&data注册到QML中data是自定义类对象 这样在 qML中就可以使用自定义类对象的方法了在自定义类中 data对象的方法需加 Q_INVOKABLE  
    
    //QML中
    import QtCharts 2.0
    
    Item //QML中最基本得对象
    {
        xxx.xxx//这里就是自定义对象名,和他的方法
        Text
        {
          text:  
        }
      //可声明一些属性或者添加一些对象
    }
    
    
    
        viewer.setSource(QUrl(QLatin1String("qrc:///qml/qmlvideofx/Main.qml")));//加载视图QML文件
    
    
     viewer.setResizeMode(QQuickView::SizeRootObjectToView);//视图将自动将根项调整为视图的大小
     viewer.show();//显示
    

在c++中调用QML中的函数
//QML中
import QtCharts 2.0

Item //QML中最基本得对象
{
    
    Text
    {
        id:qmlf
      function qmlFunction(msg)//QML中自定义函数
      {
          console.log("打印",msg)
              return "abc"
          
      }
        qmlFunction("数据")//QML中调用自定义函数
    }
    
    
    
    
  //可声明一些属性或者添加一些对象
     qmlf.qmlFunction("数据")//QML中调用自定义函数
}

程序中用引擎

QQmlApplicationEngine  engine;//qml引擎 用来链接程序和qml文件
QQmlCompoent compen(&engine,"QML文件路径");//QML组件并添加到引擎//如果路径是在下层目录需加../否则直接写名称即可
QObject *object=compen.create();//创建一个组件并用QObject指针指向他
QVariant msg="hello qml";//QVariant对象每次保存单个类型()的单个值。
QVariant retVal;

 QMetaObject::invokeMethod(obj, "qmlFunction",                                                            Q_RETURN_ARG(QVariant,retVal),//这个是返回值
                           Q_ARG(QVariant, msg));//这个是传参
   // Q_RETURN_ARG,Q_ARG必须指定QVariant类型 //程序中调用QML函数
   

c++中调用QML中的信号
import QtCharts 2.0

Item //QML中最基本得对象
{
    Item
    {
      id:item
      width:100
      height:100
      signal:qmlsignal(string msg)
  
      MouseArea//鼠标
      {
        anchors.fill:parent//鼠标的点击的区域为父窗口的区域
        onClicked:item.qmlSignal("wai")//鼠标点击了发射信号
      }
      
    }
  //可声明一些属性或者添加一些对象
}

c++程序中

#include<QQuickItem>//Quick项
QQuickView viewer(QUrl(QLatin1String("qrc:///qml/qmlvideofx/Main.qml");//视图
QObject*item=viewer.rootObject();//返回跟对象 QQuickItem类型                       
xxx xxx;//自定义类
QObject::commect(item,SIGNAL(qmlSignal(QString)),&xxx,SLOT(自定义类的槽函数(QString)));                       
  viewer.show();//视图显示                     




QML

QML支持许多基本类型。
基本类型是引用简单值的类型,例如int或string。这与QML对象类型形成对比,QML对象类型是指具有属性、信号、方法等的对象。与对象类型不同,基本类型不能用于声明QML对象:例如,不可能声明int{}对象或size{}对象。

基本类型可指:
单个值(例如int指单个数字,var可以指单个项目列表)

包含一组简单属性-值对的值(例如,大小指v)

import QtQuick 2.0

import QtCharts 2.0

Item //QML中最基本得对象
{
    Item
    {
      signal:QML自定义信号
      text:  
    }
  //可声明一些属性或者添加一些对象
}

QML设计模式 QT其他项目Qt Quick UI

猜你喜欢

转载自blog.csdn.net/qq_45743563/article/details/109172129