Russian Qt Forum
Ноябрь 25, 2024, 13:35
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Цветовое оформление выделенной строки в QTableView
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Цветовое оформление выделенной строки в QTableView (Прочитано 17844 раз)
water
Гость
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #15 :
Декабрь 05, 2012, 14:57 »
Я выделяю строку в зависимости от значения в колонке следющим способом
//Header file
class myModel : public QSqlQueryModel
{
Q_OBJECT
public:
QVariant data(const QModelIndex &index,
int role = Qt::DisplayRole) const;
};
//source file
QVariant myModel::data(const QModelIndex &index,int role) const {
QVariant value = QSqlQueryModel::data(index, role);
if (role==Qt::BackgroundColorRole){
QModelIndex controlIndex ;
controlIndex= index.sibling(index.row(), 6);// второй параметр это проверяемая колонка
if (controlIndex.data(Qt::DisplayRole).toString()==QObject::trUtf8("Да"))
return QColor(55,175,189) ; //Подсвечиваю всю строку
return value;
}
}
Ну а далее создаешь объект этого класса и работаешь с ним как с обычным объектом QSqlQueryModel
Записан
radislav72
Гость
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #16 :
Декабрь 06, 2012, 12:13 »
Bepec
Спасибо, идею понял
water
А что делает index.sibling ? Что-то адекватно перевести с английского не смог... Создает дубликат индекса? Если да, то зачем?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #17 :
Декабрь 06, 2012, 12:45 »
sibling — сосед, «брат»
Записан
Изучением 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
Гость
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #18 :
Декабрь 06, 2012, 12:55 »
Я понимаю, что по-английски sibling- "родной брат/сестра", мне не понятно, что делает метод sibling
Записан
radislav72
Гость
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #19 :
Декабрь 06, 2012, 13:06 »
water
Так можно подсветить невыделенную строку, но стандартное выделение "перекрывает" то что прописать таким образом в коде, потому для выделения нужен другой способ
Записан
evgeniy
Гость
Re: Цветовое оформление выделенной строки в QTableView
«
Ответ #20 :
Август 05, 2014, 21:28 »
class BackgroundDelegate : public QStyledItemDelegate {
public:
explicit BackgroundDelegate(QObject *parent = 0)
: QStyledItemDelegate(parent){}
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const {
// Fill the background before calling the base class paint
// otherwise selected cells would have a white background
QVariant background = index.data(Qt::BackgroundRole);
if (background.canConvert<QBrush>())
painter->fillRect(option.rect, background.value<QBrush>());
// the comment below makes selection transparent
//QStyledItemDelegate::paint(painter, option, index);
// To draw a border on selected cells
if(option.state & QStyle::State_Selected) {
painter->save();
QPen pen(Qt::black, 2, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin);
int w = pen.width()/2;
painter->setPen(pen);
painter->drawRect(option.rect.adjusted(w,w,-w,-w));
painter->restore();
}
}
};
потом
table->setItemDelegateForColumn(2, new BackgroundDelegate(this));
«
Последнее редактирование: Август 06, 2014, 13:37 от evgeniy
»
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...