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
#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
相關文章
- qml基礎知識
- 0基礎小白學程式設計,Java和Python哪個更好?程式設計JavaPython
- QML之C++混合程式設計C++程式設計
- 零基礎小白如何自學UI設計?UI
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Shell程式設計-基礎程式設計
- python程式設計基礎Python程式設計
- shell程式設計基礎程式設計
- 一、(基礎知識)一個前端程式設計師的java小白之路前端程式設計師Java
- 0基礎小白轉行程式設計師,企業願意要嗎?行程程式設計師
- 沒有程式設計基礎的小白可以學習大資料嗎?程式設計大資料
- Java 基礎02Java程式設計基礎Java程式設計
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- 【socket程式設計基礎模板】程式設計
- 【程式設計基礎】輸出程式設計
- 程式設計基礎知識程式設計
- 網路程式設計基礎程式設計
- python 程式設計基礎案例Python程式設計
- shell程式設計基礎二程式設計
- QT QML模組的程式設計藝術QT程式設計
- QML::自繪基礎控制元件控制元件
- 為什麼說沒有程式設計基礎的小白學Python最合適?程式設計Python
- Java程式設計基礎33——JDBCJava程式設計JDBC
- React基礎:宣告式程式設計React程式設計
- shader程式設計基礎:畫線程式設計
- Golang併發程式設計基礎Golang程式設計
- 併發程式設計基礎(下)程式設計
- 併發程式設計基礎(上)程式設計
- Linux系統程式設計基礎Linux程式設計
- JavaSE基礎程式設計十題Java程式設計
- JAVA網路程式設計基礎Java程式設計
- Java 基礎程式設計筆記Java程式設計筆記
- Java併發程式設計基礎Java程式設計
- java程式設計師程式設計筆試基礎學習Java程式設計師筆試
- 《java程式設計基礎》java的基礎知識(三)Java程式設計
- 網路程式設計基礎知識程式設計
- python基礎(物件導向程式設計)Python物件程式設計