我已经在Qt 5.12中使用新的TableView
创建了该表视图,但是我不知道如何为其创建标头,我阅读了文档,也没有标头委托。这里是一些屏幕截图:
所以如何为5.12 TableView添加headerDelegate?
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
visible: true
ListModel{
id:tableModel
ListElement{
identifier:1
name:'value'
title: 'test'
}
ListElement{
identifier:2
name:'value2'
title: 'test2'
}
}
width:1000; height: 500
//
TableView {
id:trans
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
anchors.fill: parent
columnSpacing: 1
rowSpacing: 1
clip: true
model: tableModel
delegate: Rectangle {
Row{
Rectangle{
implicitWidth: 100
implicitHeight: 50
Text{
text: identifier
}
}
Rectangle{
implicitWidth: 100
implicitHeight: 50
Text{
text:name
}
}
Rectangle{
implicitWidth: 100
implicitHeight: 50
Text{
text:title
}
}
}
}
}
}
和TableViewColumn不起作用
Qc.TableViewColumn{
title: 'id'
role: 'identifier'
width:100
}
我正在尝试从C ++设置其标头,但我的代码无法正常运行
class TableHelper : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void setTableHeader(QObject & table){
// get QTableView and Set QHeaderView
qDebug()<< "here";
}
};
main:
TableHelper th;
engine.rootContext()->setContextProperty("tableHelper",&th);
qml:
Component.onCompleted: {
tableHelper.setTableHeader(trans)
}
我在C ++代码中有一个断点,但是它永远不会运行。
答案 0 :(得分:0)
This github回购展示了如何在QML TableView
(Qt 5.12.0)中构建自己的标头:
TableView {
anchors.fill: parent
columnSpacing: 1
rowSpacing: 1
clip: true
model: TableModel {}
delegate: Rectangle {
implicitWidth: 150
implicitHeight: 50
border.color: "black"
border.width: 2
color: (heading==true)?"red":"green" // If heading make it red!
TableView.onPooled: console.log(tabledata + " pooled")
TableView.onReused: console.log(tabledata + " resused")
Text {
text: tabledata
font.pointSize: 12
anchors.centerIn: parent
}
}
}