Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: wolfut от Июль 05, 2011, 09:51



Название: Изменить шрифт определенных элементов списка QTreeView
Отправлено: wolfut от Июль 05, 2011, 09:51
Доброго времени суток.

Как можно изменить шрифт определенных строк в QTreeView в соответствии со значение в модели (QAbstractItemModel). Например если значение "true" - выделить жирным строку.


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: Пантер от Июль 05, 2011, 09:53
Возвращай нужное значения в модели для Qt::FontRole.


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: wolfut от Июль 05, 2011, 10:07
Так, немного не понял, вот задам я значение
model->insertRow(0)
model->setData(model->index(0,0), value, Qt::FontRole).....где value - true\false.
.....
Что дальше?


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: Пантер от Июль 05, 2011, 10:09
А что за модель используешь? Вообще, для Qt::FontRole в value нужно передавать нужный QFont.


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: wolfut от Июль 05, 2011, 10:17
Создаю модель:

    modelSms = new QStandardItemModel(0, 4, NULL);
    modelSms->setHeaderData(0, Qt::Horizontal, QObject::tr("Subject"));
    modelSms->setHeaderData(1, Qt::Horizontal, QObject::tr("Sender"));
    modelSms->setHeaderData(2, Qt::Horizontal, QObject::tr("Date"));
    modelSms->setHeaderData(3, Qt::Horizontal, QObject::tr("Idx"));

Заполняю модель, с помощью процедуры:

addM(QAbstractItemModel *model, const QString &name,
             const QString &text, const QDateTime &date, int idx,const QString &text2)
{
    model->insertRow(0);
    model->setData(model->index(0, 0), name);
    model->setData(model->index(0, 0), name, Qt::ToolTipRole);
    model->setData(model->index(0, 1), text);
    model->setData(model->index(0, 1), text2, Qt::ToolTipRole);
    model->setData(model->index(0, 2), date);
    model->setData(model->index(0, 3), idx);

}

Присваиваю модель QTreeView:

 ui->treeView->setModel(modelSms);


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: Пантер от Июль 05, 2011, 10:24
Попробуй так:

Код
C++ (Qt)
model->setData(model->index(0, 0), name);
model->setData(model->index(0, 0), name, Qt::ToolTipRole);
QFont font (view->font ());
font.setBold (true);
model->setData(model->index(0, 0), font, Qt::FontRole);
 


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: wolfut от Июль 05, 2011, 14:52
да-да, помогло, спасибо


Название: Re: Изменить шрифт определенных элементов с&#
Отправлено: kolts от Август 13, 2015, 13:24
Подниму старую тему, правда у меня qtableview. Не могу задать шрифт в определенной ячейке.
QFont font;
font.setStrikeOut(true);
font.setItalic(true);
products->setData(products->index(row,i),font,Qt::FontRole); (возвращает false потому что шрифт не устанавливается)
В чем может быть проблема. Не нравится шрифт или нельзя так назначать. По идее через setData можно устанавливать любые значения для доступных ролей. Пробовал инициализировать шрифт так QFont font = (products->data(products->index(0,0),Qt::FontRole).value<QFont>()) для проверки но все равно не хочет


Название: Re: Изменить шрифт определенных элементов списка QTreeView
Отправлено: Nidxogg от Август 13, 2015, 15:16
Может шрифта в системе нет?