Наведите курсор на заголовок столбца tableView - PullRequest
1 голос
/ 11 июля 2019

У меня есть простой TableView с 4 TableViewColumns, я обычно не работаю с qml, поэтому я не совсем уверен, как правильно работать внутри этого кода.

Что мне нужно, так это то, что мне нужно навести указатель мыши на заголовки таблицы (имена столбцов). Я все проверил и не нашел ни одного простого решения моей проблемы. Если есть решение для этого онлайн, я извиняюсь, но уже потратил больше, чем несколько часов, просматривая код, который мне не помог.

Я пытался использовать всплывающую подсказку внутри TableVIewColumn, но она никогда не отображается, и я видел, что область мыши не поддерживается внутри TableViewColumn. Может быть, решение простое, но я не знаю об этом для момент

Rectangle {
    width: parent.width
    height: parent.height

    TableView {
        id: table
        width: parent.width
        height: parent.height
        headerVisible: true

        TableViewColumn {
            id: time
            role: "t-stamp"
            title: "Time"
            width: 60
        }
        TableViewColumn {
            id: d
            role: "id"
            title: "SignId"
            width: 40
        }
        TableViewColumn {
            id: sid
            role: "s-id"
            title: "StratId"
            width: 50
        }
        TableViewColumn {
            id: stratname
            role: "strat_name"
            title: "StratName"
            width: 200
        }

        Connections{
            target: MessageTabelModel
            onUpdateView:{
                  table.resizeColumnsToContents()
            }
        }
        model: MessageTabelModel
    }
}

1 Ответ

1 голос
/ 11 июля 2019

TableView имеет свойство headerDelegate, которое содержит информацию о мышке:

В делегате заголовка у вас есть доступ к следующим специальным свойствам:

  • styleData.value - значение или текст для этого элемента
  • styleData.column - индекс столбца
  • styleData.pressed - true при нажатии столбца
  • styleData.containsMouse - true, когда столбец находится под мышью
  • styleData.textAlignment - горизонтальное выравнивание текста столбца (начиная с QtQuickControls 1.1)

ИтакВы можете использовать styleData.containsMouse для своих нужд, например, с простым базовым текстом:

headerDelegate: Text {
    color: styleData.containsMouse ? "red" : "black"
    text: styleData.value
    // ...
}

Или, если вы хотите больше настроек:

headerDelegate: Rectangle {
    height: 20
    implicitWidth: headerText.paintedWidth
    border.color: "black"
    // ...

    Text {
        id: headerText
        color: styleData.containsMouse ? "red" : "black"
        text: styleData.value
        anchors.fill: parent
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
    }
}
...