QML Tableview горизонтальная полоса прокрутки - PullRequest
0 голосов
/ 18 июня 2020

Я использую TableView компонент QML, где ширина каждого столбца устанавливается равной общей ширине таблицы, деленной на количество столбцов. Это вводит некоторые дробные части, и в результате горизонтальная полоса прокрутки почти всегда видна внизу.

Но я не хочу отключать полосу прокрутки, поскольку у меня есть возможность изменять ширину столбца, и из-за этого полоса прокрутки может быть необходимо. Итак, моя проблема связана с первоначальным показом этого TableView компонента. Я хочу избавиться от этой полосы прокрутки, когда компонент отображается в первый раз, но не отключайте ее для использования в будущем.

Я новичок в QML и не знаю всех его аспектов, но пришедшее решение для меня - установить ширину каждого столбца, как я, а затем для последнего получить сумму всех предыдущих столбцов и установить его ширину в parent.width - эту сумму. Не могли бы вы помочь мне понять, как я могу реализовать это с помощью QML?

1 Ответ

0 голосов
/ 18 июня 2020

columnWidthProvider вычисляется один раз при добавлении столбца. Я не могу воспроизвести вашу ошибку с этим. contentWidth становится таким же, как width

    TableView {
        id: table
        anchors.fill: parent

        columnWidthProvider: function (column) {
            console.log(parent.width , columns, parent.width / columns)
            // wdth is 0 here
            return parent.width / columns
        }

        ScrollBar.horizontal: ScrollBar {
            policy: ScrollBar.AsNeeded 
        }

//....
    }

Но у меня была такая же проблема в другом представлении. Решение было:

Flickable {

    id:view

    ScrollBar.horizontal: ScrollBar {
        policy: (view.width - view.contentWidth < -3) ? 
            ScrollBar.AlwaysOff : ScrollBar.AsNeeded}

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...