Я хотел бы отобразить QVector3D в таблицеView, желательно, как это: (x, y, z). я подклассы класса QAbstractTableModel и реализованы функции QAbstractTableModelSublass :: данные:Как отобразить QVector3D в одной ячейке в QTableView с помощью подкласса qAbstractTableModel
QVariant data(const QModelIndex &index, int role= Qt::DisplayRole) const override
{
...
if(role == Qt::DisplayRole)
{ /* decide in which column and row to display the data*/
QVector3D p(1.,2.,3.); return QVariant(p);
}
}
Однако клетка-мишень, где должен отображаться QVector3D пусто. Я совершенно уверен, что правильный QVariant экземпляр построен, так как я был в состоянии напечатать значение, как это:
QVariant v = QVariant(p);
qDebug()<<v.value<QVector3D>();
Что я упускаю? Как я должен отображать QVector3D в таблице в одной ячейке?
QStyledItemDelegate :: displayText даже не называется (называется qDebug в теле fn), когда QVector3D (0,0,0). Значение ничего не отображается. Все нормально, когда хотя бы один компонент не равен нулю. Если я не использую делегат и возвращаю QString в data() fn, как описано ниже в ответе ваханчо, значение отображается как ожидалось. Что это за колдовство? – dodol