样式化TableView Scroll后,我在QML中收到警告

时间:2018-12-03 15:42:47

标签: qt qml

我正在使用以下代码在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"
}

我尝试将intcolor切换为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
            }
        }
    }
}

也许错误/警告与不兼容的进口有关?

1 个答案:

答案 0 :(得分:1)

如果使用TableView,则必须使用TableViewStyle而不是ScrollViewStyle。并且您可以继续使用相同的属性,因为TableViewStyle继承自ScrollViewStyle

style: TableViewStyle{
    handle: Rectangle {
        implicitWidth: 15
        implicitHeight: 15
        color:  "#000000"
    }
    minimumHandleLength: 30
}

删除下面的代码行,因为背景需要一个Component,但由于TableView将占据整个页面,因此这也是不必要的:

background: { color:"black" }