我正在使用以下代码在TableView Component中设置处理程序的样式:
TableView {
style: ScrollViewStyle{
handle: Rectangle {
implicitWidth: globals.scrollBar.handlerWidth
implicitHeight: globals.scrollBar.handlerWidth
color: globals.scrollBar.handlerColor
}
}
}
属性为:
property var scrollBar: QtObject {
property int handlerWidth: 14
property color handlerColor: "#6b6b6b"
}
我尝试将int
和color
切换为var
,但是仍然遇到相同的问题。
全局变量是在main上定义的,如下所示:
Globals {
id: globals
}
现在我在QT中收到很多警告
file:///C:/Qt/5.11.1/mingw53_32/qml/QtQuick/Controls/Private/BasicTableView.qml:393:48: Unable to assign [undefined] to bool
file:///C:/Qt/5.11.1/mingw53_32/qml/QtQuick/Controls/Private/BasicTableView.qml:97:38: Unable to assign [undefined] to QQmlComponent*
file:///C:/Qt/5.11.1/mingw53_32/qml/QtQuick/Controls/Private/BasicTableView.qml:461:20: Unable to assign [undefined] to QColor
我想念什么?
使用qml创建一个空的qt(5.12)应用程序的最小功能示例
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.1
ApplicationWindow {
id: window
title: "Stack"
visible: true
width: 1400
ListModel {
id: libraryModel
ListElement {
title: "A Masterpiece"
author: "Gabriel"
}
ListElement {
title: "Brilliance"
author: "Jens"
}
ListElement {
title: "Outstanding"
author: "Frederik"
}
}
Page {
id: page
anchors.fill: parent
background: { color:"black" }
TableView{
style: ScrollViewStyle{//TODO: ScrollViewStyle is giving a lot of warnings
handle: Rectangle {
implicitWidth: 15
implicitHeight: 15
color: "#000000"
}
minimumHandleLength: 30
}
anchors.fill:parent
TableViewColumn {
role: "title"
title: "Title"
width: 100
}
TableViewColumn {
role: "author"
title: "Author"
width: 200
}
model: libraryModel
itemDelegate: Text
{
text: styleData.value
elide: Text.ElideRight
}
}
}
}
也许错误/警告与不兼容的进口有关?
答案 0 :(得分:1)
如果使用TableView,则必须使用TableViewStyle而不是ScrollViewStyle。并且您可以继续使用相同的属性,因为TableViewStyle继承自ScrollViewStyle:
style: TableViewStyle{
handle: Rectangle {
implicitWidth: 15
implicitHeight: 15
color: "#000000"
}
minimumHandleLength: 30
}
删除下面的代码行,因为背景需要一个Component,但由于TableView将占据整个页面,因此这也是不必要的:
background: { color:"black" }