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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: сложный текст в QTreeView  (Прочитано 5925 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Декабрь 01, 2020, 06:57 »

Добрый день.
Как можно в одной ячейке в QTreeView отобразить такой текст ( см рис)?
Желательно в одной ячейке две строки. Ну или хотябы пусть будет 2 строки = 2 ячейки, но текст я планирую в слоте подсвечивать разные цифры - разным цветом по разным событиям.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Декабрь 01, 2020, 08:43 »

С помощью делегата в ячейке можно что угодно изобразить.
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #2 : Декабрь 01, 2020, 08:46 »

делегат (виджет делегата) вроде выскочит только тогда, когда переходишь в режим редактирования ячейки.... а при обычном просмотре....  или ошибаюсь... попробую делегатом
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Декабрь 01, 2020, 13:11 »

+1 к делегату.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #4 : Декабрь 01, 2020, 13:16 »

а в делегат чем лучше сделать? QTextBrowser и туда html засунуть? QWidget + Q*Layout + *xQLabel?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Декабрь 01, 2020, 13:54 »

Можно через виджеты, а можно сразу через paint, если делегат пассивный.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #6 : Декабрь 02, 2020, 08:07 »

пошел через paint()

делегат хидер
Код:
#include <QStyledItemDelegate>

class DataDelegate : public QStyledItemDelegate
{
public:
DataDelegate(QObject *parent = 0);
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index);
};

исходник
Код:
void DataDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index)
{
return; //тут ставлю брейкпоинт
}

использование
Код:
	dataModel= new DataModel(this);
ui->treeView->setModel(dataModel);

ui->treeView->setItemDelegate(new DataDelegate);

QStandardItem *item= new QStandardItem(QString::fromLocal8Bit("Пудинг лор!"));
dataModel->setItem(0, 0, item);
Не попадаю в брейкпоинт и на QTreeView текст "Пудинг лор!". От куда там взялся текст и почему я не попал в свой paint()?  Что я делаю не так?
« Последнее редактирование: Декабрь 02, 2020, 08:12 от juvf » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Декабрь 02, 2020, 12:11 »


void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #8 : Декабрь 02, 2020, 12:13 »

конст просмотрел, спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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