Qt使用教程:使用Qt Quick UI表單(三)
實(shí)現(xiàn)主視圖的應(yīng)用邏輯
新項(xiàng)目向?qū)⒛0宕a添加到main.qml文件中來(lái)創(chuàng)建菜單項(xiàng)和按鈕。通過(guò)刪除舊的代碼和添加新的代碼修改模板代碼。您可以從UI表單中刪除按鈕,同時(shí)還需要從main.qml中刪除相應(yīng)的代碼(或應(yīng)用程序不能被創(chuàng)建)。
指定主視圖的大小
該向?qū)?chuàng)建一個(gè)ApplicationWindow類(lèi)型和一個(gè)MainForm類(lèi)型來(lái)指定應(yīng)用程序主視圖。輸入應(yīng)用程序的名稱(chēng)作為標(biāo)題屬性的值。當(dāng)按鈕被點(diǎn)擊時(shí),通過(guò)刪除舊的行所調(diào)用函數(shù)來(lái)清理MainForm代碼:
MainForm { anchors.fill: parent button1.onClicked: messageDialog.show(qsTr("Button 1 pressed")) button2.onClicked: messageDialog.show(qsTr("Button 2 pressed")) }
從ApplicationWindow類(lèi)型中刪除width和height屬性,并在MainForm類(lèi)型中使用一個(gè)布局類(lèi)型來(lái)設(shè)置主視圖的最小值和首選大小。想要使用布局,可導(dǎo)入QtQuick Layouts:
import QtQuick.Layouts 1.1
然后指定MainForm的以下屬性:
MainForm { anchors.fill: parent Layout.minimumWidth: 800 Layout.minimumHeight: 480 Layout.preferredWidth: 768 Layout.preferredHeight: 480
創(chuàng)建表視圖模型
在表視圖中使用列表模式顯示客戶數(shù)據(jù)。因?yàn)榱斜砟J绞菑膸讉€(gè)不同的.qml文件中讀取的,通過(guò)在CustomerModelSingleton.qml中定義一個(gè)singleton類(lèi)型并在main.cpp注冊(cè)來(lái)訪問(wèn)它。這樣,就不必依賴(lài)QML context作用域規(guī)則來(lái)訪問(wèn)列表模型。
1.在Projects視圖中,右鍵單擊qml.qrc并選擇Add New > Qt > QML File (Qt Quick 2)來(lái)創(chuàng)建CustomerModelSingleton.qml文件并將其添加到項(xiàng)目中。
2.從CustomerModelSingleton.qml中復(fù)制實(shí)現(xiàn)。
3.在main.qml中添加以下代碼到MainForm來(lái)訪問(wèn)列表模型:
tableView1.model: CustomerModel Component.onCompleted: CustomerModel.selection = tableView1.selection
4.在main.cpp文件中注冊(cè)singleton類(lèi)型,包含Qt QML模塊并在初始化函數(shù)中調(diào)用qmlRegisterSingletonType()函數(shù):
... #include <QtQml> int main(int argc, char *argv[]) { QApplication app(argc, argv); QUrl resourceUrl(QStringLiteral("qrc:/CustomerModelSingleton.qml")); qmlRegisterSingletonType(resourceUrl, "my.customermodel.singleton", 1, 0, "CustomerModel");
5.在main.qml中想要使用已經(jīng)注冊(cè)的singleton類(lèi)型,您必須導(dǎo)入singleton類(lèi)型:
import my.customermodel.singleton 1.0