Применение нужных настроек(цвет, ширина) в графике для определенных обьектов
Всем привет.
Пытаюсь решить такую проблему:
есть булевое значение наличия или отсутствия заголовков в таблице, так же для строк в таблице через 1 строку применяется дизайн.
Я вызываю функцию и передаю туда индекс, там и происходит те или иные указания для цвета и ширины границы.
И ошибку я получаю
ReferenceError: delegateRect is not defined
Вопрос, что я делаю не так?)
Благодарю заранее
- import QtQuick 2.12
- Item
- {
- id: root
- property var model
- property bool headers : false
- function getSize(column)
- {
- return tableView.model.getSizeLongString(column)
- }
- function foo(indexRow)
- {
- if (headers == true)
- {
- console.log("indexRow", headers)
- if (indexRow % 2 == 0)
- {
- delegateRect.color = "transparent";
- delegateRect.border.width = 0;
- }
- else
- {
- delegateRect.color = "#2C3033";
- delegateRect.border.width = 1;
- }
- }
- else
- {
- console.log("indexRow", headers)
- if (indexRow % 2 != 0)
- {
- delegateRect.color = "transparent";
- delegateRect.border.width = 0;
- }
- else
- {
- delegateRect.color = "#2C3033";
- delegateRect.border.width = 1;
- }
- }
- }
- Row
- {
- id: rowHeader
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- height: visible ? 35 : 0
- visible: root.headers
- enabled: !root.headers
- Repeater
- {
- id: headerRepeater
- model: root.model.headerModel
- Rectangle
- {
- id: rectHeader
- width: root.model.getSizeLongString(index)
- border.color: "blue"
- height: 35
- Component.onCompleted:
- {
- root.model.setHeaderItem(rectHeader);
- }
- Text
- {
- width: 50
- height: 35
- anchors.fill: parent
- text: root.model.headerData(modelData, Qt.Horizontal, "display")
- }
- }
- }
- }
- ListView
- {
- id: tableView
- anchors.top: headers ? rowHeader.bottom : root.top
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- flickableDirection: TableView.VerticalFlick
- clip: true
- model: root.model
- delegate: Rectangle
- {
- id: delegateRect
- color: "transparent"
- implicitWidth: 543
- implicitHeight: 22
- property var indexRow: model.index
- Row
- {
- id: rect
- clip: true
- Repeater
- {
- id: celsRepeater
- model: root.model.columnCount()
- Component.onCompleted:
- {
- root.foo(delegateRect.indexRow)
- }
- Rectangle
- {
- id: rextText
- border.color: "blue"
- color: "#2C3033"
- width: root.model.getSizeLongString(index)
- height: 15
- Text
- {
- width: 50
- height: 35
- anchors.fill: parent
- font.pixelSize: 12
- verticalAlignment: Text.AlignTop
- color: model.index === 0 ? "#B8B8B8" : "#EAEAEA"
- text: root.model.getData(indexRow, model.index)
- }
- }
- }
- }
- }
- }
- }
2
99
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
добрый, а пробывали обращаться через лист tableView.delegateRect.color="transparent";?
когда-то делал цветные строки в таблице на первых контролах, делал так
Интересно что если я не вызываю функцию а в место нее все if вытаскиваю то это срабатывает. Но через функцию не работает.
Не пойму почему
где-то явно нарушена область видимости обьекта, возможно delegateRect не доступен за пределами своего елемента, нужно смотреть документацию по-глубже.
где-то явно нарушена область видимости обьекта, возможно delegateRect не доступен за пределами своего елемента, нужно смотреть документацию по-глубже.
На самом деле есть такая мысль, надо бы понять как это протестить чтоыб найти ответ)
Кстати такой вопрос который касается имено этого кода, на строке 138 там есть ширина для Rectangle и в нем уже будет текст.
А вот внешнйи делегат у него у Rectangle у меня стоит статический размер ширины.
Вопрос состоит в том, можно ли получая ширину на 138 формировать ширину делегата для всех созданных в репиторе обьектов?
Мне надо как то в нормальный вид привезти то что на 110 и 111 строках.
если я правильно понял, можно добавить property int rec_width:0 в самом начале делегата, тогда там где нужно указать ширину указываем rec_width, а в Component.onCompleted: добавить rec_width=root.model.getSizeLongString(index), тогда будет перерисовываться по указанному размеру (должно сработать), или отдельно в модели передавать ширину, тогда будет что-то вроде property int rec_width:root.model.getSize(). возможно путанно написал, надеюсь идею поняли
Добрый вечер.
Спасибо за совет. По сути я идею понял но она получается не рабочей.
Потому что с начале у делегата имеется пропертя данная, потом ширина implicitWidth: 543 которая и дает ширину данной строки, а уже после репитер создает данные 2 или более ячеек, и только тогда пропертя получает размер.
В общем не получается так(