中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

佛山做網(wǎng)站百度app免費下載

佛山做網(wǎng)站,百度app免費下載,南陽微信網(wǎng)站,人事外包一、可能遇到的一些問題 Q1:如何禁用拖動? 在TableView下加一句代碼即可: interactive: false 補充:這個屬性并不專屬于TableView,而是一個通用屬性。很多Controls下的控件都可以使用,其主要作用就是控…

一、可能遇到的一些問題

Q1:如何禁用拖動?

在TableView下加一句代碼即可:

interactive: false

補充:這個屬性并不專屬于TableView,而是一個通用屬性。很多Controls下的控件都可以使用,其主要作用就是控制交互的。

舉個例子:像width、height、color這些都屬于通用屬性,并不是說只有一個控件需要指定它的寬高、顏色。這種通用特性在QML是非常常見的。

或許你想給某個控件實現(xiàn)某種功能,沒準這個功能其實就是其他控件中的一個屬性罷了。

Q2:設(shè)置了標題欄之后,程序直接卡死?

可能是Layout布局的問題,把Layout布局換成Item試試。

Q3:表頭數(shù)據(jù)和內(nèi)容數(shù)據(jù)重疊顯示了?或者一片空白?

大概率還是布局的問題,檢查一下吧!

補充:在 HorizontalHeaderView 中使用了 syncView 屬性,就相當于是將 HorizontalHeaderView 和指定的 TableView 綁定了,它默認會有個布局,就是把水平標題欄放在表格內(nèi)容的上方,但是左右的對齊方式可能并不是我們想要的,所以在做整體布局時需要注意這一點。

還有其它問題?

上面的幾個問題是我在做這個實例的時候遇到的,如果你有別的問題可以在評論區(qū)留言,我會逐一回復(fù)哦~

二、QML TableView 實例演示

下面截圖中的紅框部分就是最終的效果,雖然看似簡陋,實際確實有點簡陋。。。。

好消息是,這個只是我用來演示給大家看的,并不是我個人審美就這樣。。。。所以,等大家學會了怎么去用 TableView 這個控件,就按照自己的想法和需求去設(shè)計它吧!

實現(xiàn)步驟1:TableModel

在QML中,像TableView、ListView這種控件,視圖(View)和數(shù)據(jù)(model)都是分開的。所以我們需要依次去完善他們。

那么,先來實現(xiàn)一個model吧!

    //表頭數(shù)據(jù)放TableModelColumn里,內(nèi)容數(shù)據(jù)放rows里,由TableModel統(tǒng)一管理TableModel{id: tablemodel_2TableModelColumn { display: "狀態(tài)" }  //后面表頭會用到TableModelColumn { display: "簡稱" }TableModelColumn { display: "售價" }TableModelColumn { display: "庫存" }rows:   //表格里具體顯示的內(nèi)容[{"狀態(tài)": true,"簡稱": "AK-74自動步槍","售價": 149,"庫存": 500},{"狀態(tài)": true,"簡稱": "81式自動步槍","售價": 199,"庫存": 300},{"狀態(tài)": true,"簡稱": "M16突擊步槍","售價": 119,"庫存": 100},{"狀態(tài)": true,"簡稱": "SCAR突擊步槍","售價": 129,"庫存": 100},{"狀態(tài)": true,"簡稱": "HKG36突擊步槍","售價": 159,"庫存": 100}]}

在上面的代碼片段中,最外層是1個TableModel,這個TableModel和TableView是同級的,不是寫在TableView下面的哈,文章最后我會把完整的代碼也發(fā)出來。

我們這個TableModel定義1個id叫tablemodel_2,因為等會后面需要通過id來調(diào)用這個TableModel里面的數(shù)據(jù)。

接著,我們連續(xù)寫了4行TableModelColumn,這個是后面要用到的水平標題欄的數(shù)據(jù),每一個TableModelColumn就代表1列。

最后是1個 rows,這個rows后面緊跟的一個是列表[ ],列表里面放的就是除表頭以外的數(shù)據(jù)了。形式就是花括號里一對對的鍵和值,而鍵就是上面TableModelColumn中的文本,也就是列名,值才是每個單元格中具體要顯示出來的數(shù)據(jù)。

然后你可能會想到,哎呀~這么多行代碼下去,實際就顯示5行數(shù)據(jù),如果列很多、數(shù)據(jù)成千上萬,這代碼得寫多長啊!

這點不用擔心啦!因為QML的專家早就考慮到了。如果數(shù)據(jù)量很少,而且是固定的,model直接寫出來就行了。如果數(shù)據(jù)多,那最好用C++的模型類來提供。需要注意的是:C++模型必須是QAbstractItemModel的子類。

這個C++的模型類有點復(fù)雜,后面我會專門寫一篇文章來介紹它。

實現(xiàn)步驟2:TableView

做完數(shù)據(jù)層(model),下面我們就來做具體的外觀(View)吧!請看下面代碼:

?View層,大概分為2個部分,藍色框框里是一些整體的屬性設(shè)置,綠色框框里是針對每一列數(shù)據(jù)的顯示細節(jié)的描述。

在delegate中,我們寫了4個DelegateChoice。一共是5行數(shù)據(jù),為什么我們只寫了4個?因為如果你只是簡單的顯示model里的數(shù)據(jù)、不會有交互,那么就統(tǒng)一用一個DelegateChoice就行啦!

什么叫不會有交互?你看前面截圖中第一列的數(shù)據(jù)是不是都是復(fù)選框?復(fù)選框是干嘛的?不就是給用戶去勾選、去交互的嘛~

所以像這種后期會交互的數(shù)據(jù)列,就要單獨的DelegateChoice去寫。我展開第一個DelegateChoice中的代碼給你看一下:

DelegateChoice {column: 0   //指定哪一列可編輯delegate: Rectangle{implicitWidth: 150implicitHeight: 40color: t_tableView_2.currentRow === row ? "#c8e5b3" : "#eeeeee"CheckBox{anchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftchecked: model.display  //CheckBox的默認狀態(tài)就是模型里的值onToggled: model.display = checked  //編輯即更新數(shù)據(jù)到模型Material.accent: "green"}}}

看到了嗎?里面竟然還有一個delegate?這個最里層的delegate就是設(shè)置具體的單元格的顯示方式啦!

可能有了解ListView的小伙伴好奇了,我之前做ListView的時候只需要1個delegate就行了,怎么這個TableView還要套2層delegate,外面竟然還有個什么DelegateChoice?這個DelegateChoice又是什么?干啥用的?

這個DelegateChoice是按列去設(shè)置的,每一列都有不同的情況和需求,如果我們這個表格是涉及到交互、而不單單是給用戶看看的,那就需要用DelegateChoice對具體的列去設(shè)置,因為可能第1列全部是復(fù)選框,第3列又全都是單行輸入框,怎么都得去單獨設(shè)置~

實現(xiàn)步驟3:HorizontalHeaderView

這個HorizontalHeaderView就是水平標題欄啦!

HorizontalHeaderView {id: horizontalHeaderViewsyncView: t_tableView_2interactive: false  //禁用拖動delegate: Rectangle {implicitWidth: 150; implicitHeight: 40; color: "transparent"Text {text: tablemodel_2.columns[index].displayfont.bold: trueanchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10}}}

這個水平標題欄和TableView也是同級的,不要寫到TableView里面去嘍!

在QML中,標題欄和表格是分開設(shè)置的,所以設(shè)置了標題欄之后需要通過syncView屬性去綁定具體的TableView。

然后這個水平標題欄也是默認有交互效果的,如果你不想讓它動,就也用interactive屬性禁用吧!

完整代碼

import QtQuick
import QtQuick.Controls.Material
import QtQuick.Controls
import QtQuick.Layouts
import Qt.labs.qmlmodels    //TableModel需要用到的庫Item {//表頭數(shù)據(jù)放TableModelColumn里,內(nèi)容數(shù)據(jù)放rows里,由TableModel統(tǒng)一管理TableModel{id: tablemodel_2TableModelColumn { display: "狀態(tài)" }  //后面表頭會用到TableModelColumn { display: "簡稱" }TableModelColumn { display: "售價" }TableModelColumn { display: "庫存" }rows:   //表格里具體顯示的內(nèi)容[{"狀態(tài)": true,"簡稱": "AK-74自動步槍","售價": 149,"庫存": 500},{"狀態(tài)": true,"簡稱": "81式自動步槍","售價": 199,"庫存": 300},{"狀態(tài)": true,"簡稱": "M16突擊步槍","售價": 119,"庫存": 100},{"狀態(tài)": true,"簡稱": "SCAR突擊步槍","售價": 129,"庫存": 100},{"狀態(tài)": true,"簡稱": "HKG36突擊步槍","售價": 159,"庫存": 100}]}TableView{id: t_tableView_2width: contentWidthheight: contentHeightanchors.top: horizontalHeaderView.bottominteractive: false  //禁止拖動rowSpacing: 1       //行間距。列間距是columnSpacingmodel: tablemodel_2//行選擇,選中事件的處理selectionModel: ItemSelectionModel {}//指定可編輯的列,把CheckBox控件放進表格中delegate: DelegateChooser {DelegateChoice {column: 0   //指定哪一列可編輯delegate: Rectangle{implicitWidth: 150implicitHeight: 40color: t_tableView_2.currentRow === row ? "#c8e5b3" : "#eeeeee"CheckBox{anchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftchecked: model.display  //CheckBox的默認狀態(tài)就是模型里的值onToggled: model.display = checked  //編輯即更新數(shù)據(jù)到模型Material.accent: "green"}}}DelegateChoice {column: 2delegate: Rectangle{implicitWidth: 150implicitHeight: 40color: t_tableView_2.currentRow === row ? "#c8e5b3" : "#eeeeee"BasicTextField{anchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10width: 80; height: 30text: model.displayonAccepted: model.display = text            //回車更新數(shù)據(jù)onEditingFinished: model.display = text     //焦點改變更新數(shù)據(jù)}}}DelegateChoice {column: 3delegate: Rectangle{implicitWidth: 150; implicitHeight: 40color: t_tableView_2.currentRow === row ? "#c8e5b3" : "#eeeeee"BasicTextField{anchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10width: 80; height: 30text: model.displayonAccepted: model.display = text            //回車更新數(shù)據(jù)onEditingFinished: model.display = text     //焦點改變更新數(shù)據(jù)}}}DelegateChoice   //默認顯示方式,不指定具體列{delegate: Rectangle{implicitWidth: 150; implicitHeight: 40//選中行變色(生效前提是:為selectionModel分配一個ItemSelectionModel)color: t_tableView_2.currentRow === row ? "#c8e5b3" : "#eeeeee"Text{text: displayanchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10}}}}}HorizontalHeaderView {id: horizontalHeaderViewsyncView: t_tableView_2interactive: false  //禁用拖動delegate: Rectangle {implicitWidth: 150; implicitHeight: 40; color: "transparent"Text {text: tablemodel_2.columns[index].displayfont.bold: trueanchors.verticalCenter: parent.verticalCenteranchors.left: parent.leftanchors.leftMargin: 10}}}
}
http://www.risenshineclean.com/news/66243.html

相關(guān)文章:

  • wordpress 1.0手機一鍵優(yōu)化
  • 制作一個網(wǎng)站難嗎google網(wǎng)站搜索
  • 我要看一集片做網(wǎng)站主流搜索引擎有哪些
  • 阿里云網(wǎng)站更換域名seo自然排名優(yōu)化
  • 企業(yè)手機網(wǎng)站建設(shè)方案千牛怎么做免費推廣引流
  • 網(wǎng)站備案 名稱 不一致網(wǎng)站推廣seo是什么
  • 建設(shè)網(wǎng)站程序下載凡科建站后屬于自己的網(wǎng)站嗎
  • 建站平臺 做網(wǎng)站網(wǎng)絡(luò)營銷服務(wù)的特點有哪些
  • 企業(yè)建站多站點管理系統(tǒng)惠州seo排名公司
  • 黃岡貼吧黃岡論壇吧今日頭條seo
  • 長沙哪個平臺做網(wǎng)站好滄州seo公司
  • 云南個舊建設(shè)局網(wǎng)站深圳營銷型網(wǎng)站定制
  • 公司網(wǎng)站怎么做店鋪seo是什么意思
  • 重慶做營銷型網(wǎng)站建設(shè)公司關(guān)鍵詞優(yōu)化一年的收費標準
  • 商業(yè)網(wǎng)站建設(shè)案例教程seo是干什么的
  • 怎么制作網(wǎng)站客服百度網(wǎng)頁版鏈接地址
  • 網(wǎng)站建設(shè)報價單表格深圳網(wǎng)站seo推廣
  • 做網(wǎng)站的人怎么上傳內(nèi)容的湖南網(wǎng)站建站系統(tǒng)哪家好
  • 溫州網(wǎng)站建設(shè)方案報價seo優(yōu)化排名易下拉用法
  • 四川省網(wǎng)站建設(shè)百度網(wǎng)頁打不開
  • 建筑工程信息頻道寧波受歡迎全網(wǎng)seo優(yōu)化
  • 網(wǎng)站開發(fā)php怎么樣百度推廣代理商加盟
  • wordpress菜譜網(wǎng)站站長之家ip地址查詢
  • github 建網(wǎng)站行業(yè)網(wǎng)站有哪些平臺
  • 網(wǎng)站怎么做播放器促銷活動推廣語言
  • 設(shè)計素材網(wǎng)站源碼seo谷歌外貿(mào)推廣
  • 自己的簡歷網(wǎng)站怎么做百度收錄查詢工具官網(wǎng)
  • 做網(wǎng)站建設(shè)的電話銷售免費建立網(wǎng)站
  • 網(wǎng)站服務(wù)器要多少錢南寧推廣軟件
  • 做電氣設(shè)計有哪些好的網(wǎng)站四川省人民政府官網(wǎng)