QML TabView动态添加tab和赋初值

Posted jingsichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QML TabView动态添加tab和赋初值相关的知识,希望对你有一定的参考价值。

通过调用TabView的addTab  动态添加新的选项卡:Tab addTab(string titleComponent component),其中title为选项卡标题,component为选项卡内的组件(var component = Qt.createComponent("souces.qml")。

动态添加完成后,返回一个Tab,通过引用Tab的item可以访问component内的方法和属性

动态添加Tab和给Tab内的component赋初值源码:

               var component = Qt.createComponent("souces.qml")
                if(component.status===Component.Ready)
                    var tab=tabView.addTab("sdfasdf",component)
                    tabView.currentIndex=(tabView.count-1)//当前选中项
                    tab.item.tableModel.clear()
                    tab.item.tableModel.append(
                                                 a: 122222,
                                                 b: 2,
                                                 c:"Bit",
                                                 d: 4,
                                                 remark: "备注"
                                             )
                    

TabView源码:

 1     TabView  
 2         id:tabView
 3         anchors.top: functionButton.bottom
 4         anchors.bottom: parent.bottom
 5         anchors.right: parent.right
 6         anchors.left: parent.left
 7         style: TabViewStyle 
 8             frameOverlap: 1
 9             tab: Rectangle 
10                 color: styleData.selected ? "#dcdada" :"white"
11                 border.color:  "steelblue"
12                 implicitWidth: Math.max(text1.width + 4, 80)
13                 implicitHeight: 30
14                 radius: 2
15                 Text 
16                     id: text1
17                     anchors.centerIn: parent
18                     text: styleData.title
19                     color: styleData.selected ? "white" : "black"
20                 
21             
22             frame: Rectangle  color: "white" 
23             rightCorner:Rectangle
24                 anchors.right: parent.right
25                 Text 
26                     id: text2
27                     text: "+++"
28     //                    color: styleData.selected ? "white" : "orange"
29                 
30             
31         
32     

 souces.qml源码:

  1     property alias tableModel:configModel//属性别名    
  2     ListModel
  3           id: configModel
  4           ListElement
  5               a: 1;
  6               b: 2;
  7               c:"Bit"
  8               d: 4
  9               remark: "备注"
 10           
 11     
 12     TableView
 13       id: configTable
 14       alternatingRowColors:true//交替行颜色
 15       anchors.bottom: table.bottom
 16       anchors.top: functionButton.bottom
 17       anchors.left: table.left
 18       anchors.right: table.right
 19       model: configModel
 20 //      width:table.width
 21       TableViewColumn
 22           id:byteOffset
 23           role:"byteOffset"
 24           title:"字偏移"
 25           width: columnWidth
 26       
 27       TableViewColumn
 28           id:bitOffset
 29           role:"bitOffset"
 30           title:"位偏移"
 31           width: columnWidth
 32       
 33       TableViewColumn
 34           id:fieldLenType
 35           role:"fieldLenType"
 36           title:"字段长度类型"
 37           width: columnWidth
 38       
 39       TableViewColumn
 40           id:fieldLen
 41           role:"fieldLen"
 42           title:"字段长度"
 43           width: columnWidth
 44       
 45       TableViewColumn
 46           id:fieldType
 47           role:"fieldType"
 48           title:"字段类型"
 49           width: columnWidth
 50       
 51       TableViewColumn
 52           id:fieldShowType
 53           role:"fieldShowType"
 54           title:"字段显示类型"
 55           width: columnWidth
 56       
 57       TableViewColumn
 58           id:fieldName
 59           role:"fieldName"
 60           title:"字段名称"
 61           width: columnWidth
 62       
 63       TableViewColumn
 64           id:fieldValue
 65           role:"fieldValue"
 66           title:"字段值"
 67           width: columnWidth
 68       
 69 
 70       TableViewColumn
 71           id:remark
 72           role:"remark"
 73           title:"备注"
 74           width: columnWidth
 75           elideMode: Text.ElideRight
 76       
 77 
 78 
 79       headerDelegate :Rectangle//设置表头的样式
 80 //          implicitWidth: 10
 81 //          implicitHeight: 30
 82           height: 30
 83           border.color: "#b9b8b8"
 84           Text
 85               anchors.centerIn : parent//居中
 86               anchors.verticalCenter: parent.verticalCenter
 87               text: styleData.value
 88 //              color:
 89               font.bold: true
 90           
 91           MouseArea //自定义左击/右击功能  左击被屏蔽
 92               anchors.fill:parent
 93               acceptedButtons: Qt.RightButton|Qt.LeftButton
 94               onClicked: 
 95                   tableHeader_menu.popup()
 96               
 97           
163 
164       
165       //行代理可以修改行高等信息
166       rowDelegate: Rectangle 
167             height: 20
168             MouseArea //自定义左击/右击功能
169                 anchors.fill:parent
170                 acceptedButtons: Qt.RightButton|Qt.LeftButton
171                 onClicked: 
172                     if(mouse.button === Qt.RightButton)
173 //                        console.log(styleData.row )
174                         if(styleData.row!==undefined)
175                             configTable.selection.clear()//取消所有选择
176                             currrrRow=styleData.row
177                             configTable.selection.select(styleData.row)//选择行
178                             insertRowUp.visible=true
179                             deletRow.visible=true
180                             content_menu.popup()
181                         else
182                             currrrRow=configTable.rowCount-1
183                             configTable.selection.clear()//取消所有选择
184                             insertRowUp.visible=false
185                             deletRow.visible=false
186                             content_menu.popup()
187                         
188 
189                     else if(mouse.button === Qt.LeftButton)
190                         if(styleData.row!==undefined)
191                             currrrRow=styleData.row
192                             configTable.selection.clear()//取消所有选择
193                             configTable.selection.select(styleData.row)//选择行
194                         else
195                             currrrRow=-1
196                             configTable.selection.clear()//取消所有选择
197                         
198                      
199                 
200                 onDoubleClicked: 
201                     if(styleData.row!==undefined)
202                         dataFormatEidt.visible=true
203                         dataFormatEidt.linedata=configModel.get(currrrRow)
204                     
205                 
206             
207         
208     

 

以上是关于QML TabView动态添加tab和赋初值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 p:tabView 组件中动态添加和删除选项卡

SwiftUI:TabView 动态强调颜色

Primefaces tabview 设置默认静态选项卡

Primefaces TabView 动态

Primefaces tabview 验证与动态选项卡

SwiftUI:将项目动态添加到 TabView [重复]