|
|
|
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Добрый день.
Как можно в делегате QTableWidget изменить цвет всей строки? Спасибо. Это сообщение отредактировал(а) vlarry - 2.4.2016, 09:57 |
|||
|
||||
ss |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 131 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
можно установить деледат для конкретной строки tableWidget->setItemDelegateForRow(row,delegate);
а в делегате есть
в этом методе нарисовать прямоугольник с геометрией rect и заливкой и вывести текст text (или все что необходимо). еще есть
можно использовать один делегат для всей таблицы переопределив
а в методе можно проверять index.column() и index.row() и выводить строки или отдельные айтамы нужными цветами (более подробно в хелпе Qt) Так же можно установить цвет фона роль в моделе для каждого item строки таблицы
Это сообщение отредактировал(а) ss - 1.4.2016, 05:02 |
||||||||
|
|||||||||
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Да я и так переопределил paint и назначаю свою роль и по этой роли меняю цвет строки. Проблема как оказалось в том, что у меня в 3х из пяти колонках выводятся изображения (или не выводятся - если нужно) QPixmap и когда мне не надо выводить изображение, то я устанавливаю пустой QPixmap() и это изображение перекрывает фон. Как создать прозрачный QPixmap, чтобы не перекрывать фон?
Это сообщение отредактировал(а) vlarry - 1.4.2016, 08:41 |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Пустой Pixmap чёрного цвета (alpha=255) или прозрачный (alpha=0)? Нужно прозрачный.
|
|||
|
||||
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
нужен полностью прозрачный, чтобы не перекрывать фон. Думал создать просто прозрачный QPixmap в редакторе, но думаю это не правильно.... |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Ну, насколько я понимаю, создавать прозрачный QPixmap нужно так:
|
|||
|
||||
ss |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 131 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
если пустой Pixmap то его можно вообще не рисовать. Поставить проверку на это.
|
|||
|
||||
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
У меня в зависимости от условий (состояние объекта) выводятся иконки в колонках. И когда я установил иконку при некотором условии, то после изменения состояния мне ее необходимо убрать, т.е. я понимаю надо поставить другую (пустую). Попробую через QPixmpa::fill. Спасибо.
|
|||
|
||||
ss |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 131 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
зачем ? QPixmаp же пустой ? QPixmаp все равно не будет видно. Это лишняя работа рисовать пустые элементы. Будут айтамы у которых будут установленные QPixmаp и будут без айтамы без QPixmаp. Делегат не сохраняется для каждого айтама таблице. Он один для всех и на каждом новом цикле прорисовки таблицы его можно как угодно менять. т.е. указывать только то что нужно отобразить а в пустом QPixmаp смысла никакого нет |
|||
|
||||
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Спасибо, а я подумал, что в QTableWidgetItem состояние сохраняется. Попробую.
|
|||
|
||||
vlarry |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 16.8.2009 Репутация: нет Всего: нет |
Спасибо. Все получилось.
|
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Пустой пиксмап - место не занимет, текст у айтемов без пиксмапа сдвигается влево.
Прозрачный пиксмап - на экране не отображается, но место занимает. Если размеры всех пиксмапов одинаковы, текст будет начинаться с одного и того же места. Прозрачный пиксмап можно добавить в таблицу, метод data(), или при прорисовке делегатом. Сохранять его в QTableWidgetItem - пустая трата памяти. |
|||
|
||||
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |