716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
|||||||||||
1 | |||||||||||
Правильно ли я работаю с QTableWidget?02.06.2016, 09:11. Показов 5618. Ответов 13
Метки нет (Все метки)
В общем, такой вопрос: мне нужно ввести в таблицу неск. цифр и потом по нажатию кнопки закрасить ячейки с введёнными данными в цвет. Если я делаю вот так:
Программа запускается, я ввожу в произвольные ячейки таблицы текст, нажимаю кнопку - ячейки с текстом закрашиваются. Но одолевают сомнения - это действительно так нужно в конструкторе пустые строки в каждую ячейку записывать? Чтобы потом из полупустой таблицы что-то прочитать? И ещё вопрос, чтобы не создавать новую тему: можно ли в таблице выделить (цветом и/или толщиной) отдельные линии, из которых таблица состоит?
0
|
02.06.2016, 09:11 | |
Ответы с готовыми решениями:
13
Правильно ли я работаю с QSharedPointer и QVBoxLayout Подключаю мониторы с Video splitter и они работаю не правильно QTableWidget (1) >>> QTableWidget (2) исключить повторяющиеся строки не работаю if |
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
||||||
02.06.2016, 19:30 | 2 | |||||
Суть в том, что даже если ты задаёшь размеры таблицы, сами item от этого не создаются. Поэтом обращаться надо с предварительной проверкой. Вот установка жёлтого фона для непустых ячеек:
1
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
|
03.06.2016, 01:24 [ТС] | 3 |
Спасибо. А по второму вопросу - возможны линии разной толщины? Если невозможно средствами таблицы - можно рисовать вручную поверх таблицы?
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
03.06.2016, 09:02 | 4 |
Нет.
Ну можешь попробовать переопределить paintEvent().
0
|
8 / 8 / 3
Регистрация: 20.10.2015
Сообщений: 50
|
|
03.06.2016, 11:23 | 5 |
alexu_007,
Возможны, для этого тебе надо переопределить стили таблицы. Смотри в сторону QStyle.
гляди - https://habrahabr.ru/post/149687/
0
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
||||||
03.07.2016, 12:16 [ТС] | 6 | |||||
Нарисовал вот такую таблицу. Содержимое таблицы перерисовывается функцией:
QTableWidget: cannot insert an item that is already owned by another QTableWidget перевод: QTableWidget: не может вставить элемент, который уже принадлежит другому QTableWidget При этом программа работает нормально и таблица показывает всё правильно. Что это может быть? Неправильная работа с таблицей?
0
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
||||||
24.04.2018, 08:28 [ТС] | 8 | |||||
Sorry, что старую тему реанимирую - но проблема так и не решена. Как повторно использовать item для того, что-бы переписать информацию в таблице?
Я изначально записываю инфу в таблицу кодом:
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.04.2018, 08:46 | 9 |
Тебе же показали как надо делать. Сначала запрашиваешь item у таблицы и только если он не существует, создаёшь новый.
0
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
||||||
24.04.2018, 10:06 [ТС] | 10 | |||||
А если существует? Если переписывать существующий, то как раз сообщение и выскакивает:
0
|
279 / 88 / 37
Регистрация: 10.06.2015
Сообщений: 261
|
||||||
24.04.2018, 10:20 | 11 | |||||
Зачем ты его на его же место пытаешься ещё раз "засунуть". Сделай void QTableWidgetItem::setData(int role, const QVariant &value) для нужного item'а. А ля:
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.04.2018, 10:55 | 12 |
А если существует, то просто меняешь в нём текст через полученный указатель. У тебя же это есть - setText().
0
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,080
|
||||||
24.04.2018, 11:01 [ТС] | 13 | |||||
Во спасибо, это помогло. Можно даже чуть проще:
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.04.2018, 11:12 | 14 |
Без проверки ты можешь попасть на NULL.
1
|
24.04.2018, 11:12 | |
24.04.2018, 11:12 | |
Помогаю со студенческими работами здесь
14
Работаю с ArrayList Не работаю сервисы Работаю в GLScene Не работаю браузеры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |