How to display richtext and images in QTableview and QSqlQueryModel delegate
-
Im trying to find away ( simple ) to be able to display Images and RichText when using QTableview and QSqlQueryModel delegate class ,
when fetching data from SQLite. i like to be able to present some text as links and some text adding them Images .
i delegate the QSqlQueryModel and i know i have control on the Text from the data method but how can i make the Text rich ( to add underline for example )@QVariant ListSqlModel::data(const QModelIndex &index, int role) const
{
QVariant value = QSqlQueryModel::data(index, role);if (value.isValid() && role == Qt::DisplayRole) { if (index.column() == 4) { return value.toString().toUpper(); } }}@
-
You can combine void QAbstractItemView::setIndexWidget (const QModelIndex& index, QWidget* widget) with data in you model. Where widget its QLabel. Something like this:
@
QString str = model()->data(index, Qt::DisplayRole).toString();
QString richStr = "<font color = "red">" + str + "</font>";
QLabel *label = new QLabel;
view->setItemWidget(index, label);
label->setText(richStr);
@ -
Note that the approach above works, but is not very performant and totally breaks the way model/view is supposed to work.
If it is enough to modify the display properties of the whole text in an item, then you can use a proxy model to set the data roles for that. If you want to have real rich text, that is, text where within a cell different parts of the text have different fonts, then you have a problem. That is hard to do. It is possible to do this using a delegate, but it is hard to make it work right.