Название: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 14, 2015, 13:07 Добрый день. У меня появилась необходимость задавать для QTreeWidgetItem цвет фона, цвет текста, цвет выделенного фона и текста. Можно ли как-то это сделать, не задавая их всему QTreeWidget?
Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 14, 2015, 13:25 Нашел как для невыделенного item-а сделать:
Код: item->setFont(index, font); Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Bepec от Апрель 14, 2015, 13:47 1. Можно устанавливать роли при выделении/снятии выделения.
псевдокод setData(0, Qt::BackgroundRole, Qt::red); 2. Можно посмотреть в сторону StyleSheet с ихними селекторами псевдокод setStyleSheet("::item:selected{background-color:#FF0000;}"); Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 14, 2015, 14:27 setStyleSheet наверное не пойдет, так как мне нужно не всем item-ам задавать цвет фона и текста, а только конкретному.
Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Bepec от Апрель 14, 2015, 14:36 StyleSheet позволяет привязываться к данным item'а, но тут уже вопрос что вам надо и так далее.
PS к примеру айтему можно добавить свойство, по которому стиль будет применяться или же не применяться. Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 14, 2015, 16:15 Да функцию создаю, в которую посылаю сам item, цвет текста и цвет фона. Таких функций две, одна для невыделенного режима, вторая для выделенного. Item-ов в самом TreeWidget много.
Пока вот, благодаря Вашим советам, сделал для невыделенного через стандартные функции item->setBackgroundColor(index, colorFill) и item->setTextColor(index, colorText), по идеи и для выделенного тоже как-то должно. Но пока для выделенного у меня выходит только через treeWidget->setStyleSheet(QString("QTreeWidget::item:selected {background-color: %1; color: %2}").arg(colorFill).arg(colorText)). Но это не совсем то что мне нужно, так как этот стиль будет задаваться всем выделяеммым, и тому item-у который я не посылаю в свою функцию. Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Bepec от Апрель 14, 2015, 17:44 Вот когда вы четко желалку сформулируете, понятную такую с картинками и тестовым проектом, тогда вместе и реализуем.
PS я болею, навык написания ТЗ по смутным намекам выключен :D Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Igors от Апрель 14, 2015, 18:00 Билли Джонс, в Qt масса вкусных плюшек, и настораживает аппетит с которым Вы их едите :) Ну не увлекайтесь так, это всего лишь плюшки, программирования они не заменят.
Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 14, 2015, 23:41 Вот когда вы четко желалку сформулируете, понятную такую с картинками и тестовым проектом, тогда вместе и реализуем. Ну вот к примеру код небольшого приложения:PS я болею, навык написания ТЗ по смутным намекам выключен :D - mainwindow.h Код: #ifndef MAINWINDOW_H - mainwindow.ccp Код: #include "mainwindow.h" - main.cpp Код: #include "mainwindow.h" Ниже на рисунке результат кода. То есть для не выделенного item-а (в примере item2) цвет фона и текста удается задать (зеленый и красный соответственно). А хотелось бы, чтобы можно так же было задавать цвет фона и текста для выделения item-a (к примеру тому же item2). Стандартное выделение любого item-а в QTreeWidget в Qt реализовано синим цветом фона и белым текстом (ну наверное еще зависит от темы в Windows или Linux). А я хочу задавать свой к примеру только для item2. Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Bepec от Апрель 15, 2015, 12:30 Стандартно побурчу - выложить проект, это выложить архив с файлами проекта, а не зафигачить стену текста и картинку :D
Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 15, 2015, 13:25 Стандартно побурчу - выложить проект, это выложить архив с файлами проекта, а не зафигачить стену текста и картинку :D ну это кому как)) мне и кода хватает) учту, буду архив бросать в следующие разы) просто тут примерчик маленький.Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: Bepec от Апрель 15, 2015, 13:39 Ну примерно так, во всяком случае направление задал, дальше сами разбирайтесь :D
Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 16, 2015, 14:51 Ну примерно так, во всяком случае направление задал, дальше сами разбирайтесь :D Bepec, спасибо. Буду разбираться.Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: MaxoBik от Апрель 18, 2015, 17:10 setStyleSheet наверное не пойдет, так как мне нужно не всем item-ам задавать цвет фона и текста, а только конкретному. Можно и с помощью декларатива(StyleSheet) задавать, только вот беда в том, что QTreeWidgetItem не наследует от QObject, и привязаться к конкретному QTreeWidgetItem с помощью декларатива(через ID Selector #objectName или Property Selector [PropertyName=PropertyValue] и setProperty) не получится. Можно создать свой класс, который будет наследовать QTreeWidgetItem и QObject. Также можно использовать QStyledItemDelegate, но это другая история. А вообще StyleSheet подходит к статичным данным, а у вас судя повсему динамические данные, такое лучше всего перекинуть на модель. Название: Re: Как задать атрибуты для QTreeWidgetItem ? Отправлено: billy4685 от Апрель 28, 2015, 23:41 MaxoBik, спасибо учту.
|