翻譯|行業(yè)資訊|編輯:鮑佳佳|2020-09-28 11:51:34.807|閱讀 727 次
概述:在第一個(gè)正式發(fā)行版5.12中,涵蓋了QML和Python交互的許多用例,但還是忽略了社區(qū)真正需要的幾個(gè)用例?,F(xiàn)在我們正在開(kāi)發(fā)Qt6的新功能和改進(jìn),我們希望解決其中的大多數(shù)問(wèn)題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Qt是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行?,F(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。趕快點(diǎn)擊下載Qt最新試用版吧>>
自從PySide植到Qt5(又名PySide2)的初始端口以來(lái),由于QML的普及,我們希望在綁定集中完全支持QML的交互。
在第一個(gè)正式發(fā)行版5.12中,涵蓋了QML和Python交互的許多用例,但還是忽略了社區(qū)真正需要的幾個(gè)用例?,F(xiàn)在我們正在開(kāi)發(fā)Qt6的新功能和改進(jìn),我們希望解決其中的大多數(shù)問(wèn)題。
在這里,您可以找到我們到目前為止計(jì)劃在Python 6.0 Qt中所要完成的功能的摘要。
無(wú)限制類型
以前最多可以注冊(cè)50個(gè)自定義類型的限制在6.0中消失了,現(xiàn)在您可以根據(jù)需要注冊(cè)任意多個(gè)類型。
單例類型
從6.0開(kāi)始,您可以使用qmlRegisterSingletonType注冊(cè)用于QML的自定義單例。
例如,如果您想向QML公開(kāi)有關(guān)操作系統(tǒng)的信息,則可以創(chuàng)建以下類:
class SystemInfo(QObject): def __init__(self): QObject.__init__(self) def getOSName(self): return platform.system() def getOSRelease(self): return platform.release() osName = Property(str, getOSName) osRelease = Property(str, getOSRelease)
然后在CustomType1.0 下注冊(cè):
qmlRegisterSingletonType(SystemInfo, "CustomType", 1, 0, "SystemInfo")
現(xiàn)在,您SystemInfo只需導(dǎo)入CustomTypeQML代碼即可訪問(wèn):
import CustomType 1.0 Text { text: "OS Name: " + SystemInfo.osName }
不可創(chuàng)建的類型
另一個(gè)缺少的功能是將自定義QML類型注冊(cè)為不可創(chuàng)建的選項(xiàng),這可以通過(guò)qmlRegisterUncreatableType來(lái)實(shí)現(xiàn)。
您可以使用它,例如在QML中注冊(cè)自定義enum類
class Theme(QObject): @QEnum class Variant(Enum): Default, Dark, HighContrast = range(3) # ... qmlRegisterUncreatableType(Theme, "CustomType", 1, 0, "Theme", "Theme can't be created")
注冊(cè)后,您可以這樣使用enum:
適應(yīng)新的類注冊(cè)方式import QtQuick 2.0 import CustomType 1.0 Item { property int theme: Theme.Default }
Qt for Python現(xiàn)在還支持QmlElement decorator模式,該decorator的工作方式與QML_ELEMENTC ++ 類似。
QML_IMPORT_NAME = "com.library.name" QML_IMPORT_MAJOR_VERSION = 1 QML_IMPORT_MINOR_VERSION = 0 # Optional @QmlElement class ClassForQml(QObject): # ...
例如,此代碼段將公開(kāi)ClassForQml給QML,并且可以通過(guò)全局變量中指定的導(dǎo)入名稱和版本來(lái)導(dǎo)入。如果您要注冊(cè)許多類型,這對(duì)您可能特別有用。
結(jié)論
我們了解到QML + Python交互的其他方面可能是您的應(yīng)用程序當(dāng)前需要的,你或者會(huì)從中受益。因此,我希望您的一些意見(jiàn)建議,甚至是有關(guān)如何實(shí)現(xiàn)Qt forPython的創(chuàng)新,對(duì)于基于QML的應(yīng)用程序而言,這是一個(gè)非常好重要的部分。
如果這篇文章沒(méi)能滿足你的需求、點(diǎn)擊獲取更多文章教程!現(xiàn)在立刻下載Qt免費(fèi)試用吧!更多Qt類開(kāi)發(fā)工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購(gòu)現(xiàn)直降1000元,歡迎咨詢慧都獲取更多優(yōu)惠>>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: