Russian Qt Forum
Ноябрь 25, 2024, 15:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Цветовое оформление выделенной строки в QTableView  (Прочитано 17859 раз)
radislav72
Гость
« : Декабрь 04, 2012, 12:34 »

Как изменить для одного QtableView параметры выделения строки/ячейки? По умолчанию используется синий фон и белые буквы. Как задать свой цвет фона и шрифта?
Записан
carrygun
Гость
« Ответ #1 : Декабрь 04, 2012, 13:04 »

Поменять именно этому QTableView его QSS.
Записан
radislav72
Гость
« Ответ #2 : Декабрь 04, 2012, 14:55 »

А что задать в QSS?
Записан
Bepec
Гость
« Ответ #3 : Декабрь 04, 2012, 15:02 »

задать свой цвет фона и шрифта.
Qt Assistant -> find -> Qt Style Sheet
Записан
radislav72
Гость
« Ответ #4 : Декабрь 04, 2012, 16:56 »

Спасибо, разобрался, но немного не подходит- нужно для разных столбцов по-разному задавать цвет выделения.

Можно ли как-то в коде ето обрабатывать?
Записан
Bepec
Гость
« Ответ #5 : Декабрь 04, 2012, 17:34 »

Отдавать role каждому столбцу. По идее должно прокатить. В функции data модели.
Записан
radislav72
Гость
« Ответ #6 : Декабрь 04, 2012, 18:36 »

Может, я не правильно понял... Что значит "отдавать role"?

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

То-есть получается так:


В последних зеленых колонках некоторые значения (текст) выделены другим цветом. Нужно, чтобы на выделении также было видно другой цвет.
Записан
water
Гость
« Ответ #7 : Декабрь 04, 2012, 18:45 »

Попробй с помощью CSS:

//Задание стиля для активной ячейки
ui->tableView->setStyleSheet(
                "QTableView::item:selected:active {"
                "background: rgb(191, 255,191);"
                "border: 1px solid transparent;"
                "selection-color: #f00;"
                "}"

                "QTableView::item:selected:!active {"
                "background: rgb(191, 255,191);"
                "border: 1px solid transparent;"
                "selection-color: #f00;"
                "}"
                );
Записан
radislav72
Гость
« Ответ #8 : Декабрь 04, 2012, 19:36 »

Цитировать
water
Да, так можно сделать...
Но хотелось бы вариант в коде, так как нужно анализировать данные в строке выделения, и выделять в зависимости от данных- по-разному.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Декабрь 04, 2012, 21:03 »

model.setData()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
radislav72
Гость
« Ответ #10 : Декабрь 05, 2012, 08:20 »

Цитировать
model.setData()

А как из модели узнать, какая строка в данный момент выделена (должна быть выделена)?
Записан
carrygun
Гость
« Ответ #11 : Декабрь 05, 2012, 09:03 »

Цитировать
model.setData()

А как из модели узнать, какая строка в данный момент выделена (должна быть выделена)?

Об этом должна знать вьюха: QAbstractItemView::currentIndex.
Записан
radislav72
Гость
« Ответ #12 : Декабрь 05, 2012, 09:25 »

Как-то не очень хорошо из модели делать ссылку на представление... Но другого пути вроде нет?
Записан
carrygun
Гость
« Ответ #13 : Декабрь 05, 2012, 10:09 »

Возможно, стоит посмотреть в сторону QStyledItemDelegate::paint? Может поможет.
Записан
Bepec
Гость
« Ответ #14 : Декабрь 05, 2012, 12:27 »

Зачем вам ссылка на представление? Сделайте в своей модели слот, который и будет получать номер выделенной строки.
Всё.
Никакой привязки к View не будет.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.