组件的QML工具提示

时间:2018-04-30 14:32:14

标签: qt qml

我想为ToolTip中的委托Component制作TableView。它工作正常,如果我使用ItemDelegate,但是,我不能使用ItemDelegate,因为它会破坏TableView的选择模式。如果我尝试在我的委托组件中定义ToolTip,我会收到错误

 qrc:/FileSystem.qml:34 Invalid component body specification

如何使用工具提示Component

这是我的代码:

TreeView {
    id: view
    anchors.fill: parent
    sortIndicatorVisible: true
    model: fileSystemModel
    rootIndex: rootPathIndex
    selection: sel
    selectionMode: 2
    Component {
        id: mycomp
        Row{
            id: myrow
            CheckBox{
                id: cbox
                anchors.baseline: ctext.baseline
            }
            Text{
                id: ctext
                text: styleData.value
                color: styleData.textColor
                width: namecolumn.width-cbox.width-myrow.x
                elide: Text.ElideRight
            }
        }
        NC.ToolTip {
            parent: mycomp
            visible: hovered
            delay: 1000
            text: qsTr(styleData.value)
        }
    }

    TableViewColumn {
        id: namecolumn
        title: "Name"
        role: "fileName"

        resizable: true
        width: parent.width-sizeWidth-dateWidth-scrollBarWidth
        delegate: mycomp

    }

1 个答案:

答案 0 :(得分:2)

组件必须只包含一个“子”。因此,您可以尝试将组件的内容包装到Item中,如下所示:

Component {
    Item {
        width: parent.width
        height: myrow.height

        Row{
            id: myrow
            CheckBox{
                id: cbox
                anchors.baseline: ctext.baseline
            }
            Text{
                id: ctext
                text: styleData.value
                color: styleData.textColor
                width: namecolumn.width-cbox.width-myrow.x
                elide: Text.ElideRight
            }
        }
        MouseArea {
            id: mouseArea
            anchors.fill: true
            hoverEnabled: true
        }
        NC.ToolTip {
            visible: mouseArea.containsMouse
            delay: 1000
            text: qsTr(styleData.value)
        }
    }
}