Russian Qt Forum

Qt => Model-View (MV) => Тема начата: juvf от Декабрь 01, 2020, 06:57



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


Название: Re: сложный текст в QTreeView
Отправлено: Old от Декабрь 01, 2020, 08:43
С помощью делегата в ячейке можно что угодно изобразить.


Название: Re: сложный текст в QTreeView
Отправлено: juvf от Декабрь 01, 2020, 08:46
делегат (виджет делегата) вроде выскочит только тогда, когда переходишь в режим редактирования ячейки.... а при обычном просмотре....  или ошибаюсь... попробую делегатом


Название: Re: сложный текст в QTreeView
Отправлено: Racheengel от Декабрь 01, 2020, 13:11
+1 к делегату.


Название: Re: сложный текст в QTreeView
Отправлено: juvf от Декабрь 01, 2020, 13:16
а в делегат чем лучше сделать? QTextBrowser и туда html засунуть? QWidget + Q*Layout + *xQLabel?


Название: Re: сложный текст в QTreeView
Отправлено: Racheengel от Декабрь 01, 2020, 13:54
Можно через виджеты, а можно сразу через paint, если делегат пассивный.


Название: Re: сложный текст в QTreeView
Отправлено: juvf от Декабрь 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()?  Что я делаю не так?


Название: Re: сложный текст в QTreeView
Отправлено: Авварон от Декабрь 02, 2020, 12:11

void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override


Название: Re: сложный текст в QTreeView
Отправлено: juvf от Декабрь 02, 2020, 12:13
конст просмотрел, спасибо