Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-65082

Item Views don't show QMetaType::QJsonValue data properly

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.11.0 Alpha
    • 5.10.0
    • Widgets: Itemviews
    • None
    • Windows 10 x64, MSVC 2015 x86
    • 5944c2503c8515903dae3a0400fd50a8eafa8276

    Description

      Summary
      Q(Tree|Table|List)View displays QJsonValue::String, but not QJsonValue::Bool or QJsonValue::Double

       

      Code to Reproduce

      // testmodel.h
      #ifndef TESTMODEL_H
      #define TESTMODEL_H
      
      #include <QAbstractListModel>
      #include <QJsonValue>
      
      class TestModel : public QAbstractListModel
      {
      	Q_OBJECT
      	QVariantList m_data;
      
      public:
      	TestModel(QObject *parent = nullptr) :
      		QAbstractListModel(parent)
      	{
      		m_data = QVariantList{
      			true,
      			3.14159,
      			"Hello",
      			QJsonValue(true),
      			QJsonValue(3.14159),
      			QJsonValue("Hello")
      		};
      	}
      
      	int rowCount(const QModelIndex&) const override
      	{ return m_data.count(); }
      
      	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
      	{
      		if (role == Qt::DisplayRole && index.row() >= 0 && index.row() < m_data.count())
      			return m_data[index.row()];
      		return QVariant();
      	}
      };
      
      #endif // TESTMODEL_H
      
      // main.cpp
      #include "testmodel.h"
      #include <QApplication>
      #include <QListView>
      #include <QDebug>
      
      int main(int argc, char *argv[])
      {
      	QApplication a(argc, argv);
      
      	TestModel model;
      	for (int i = 0; i < model.rowCount(QModelIndex()); ++i)
      		qDebug() << model.data(model.index(i));
      
      	QListView view;
      	view.setModel(&model);
      	view.show();
      
      	return a.exec();
      }
      

       

      Debug Output
      This shows that the 6 data items have been created correctly – 3 raw QVariants plus 3 copies of the same data wrapped in QJsonValue:

      QVariant(bool, true)
      QVariant(double, 3.14159)
      QVariant(QString, "Hello")
      QVariant(QJsonValue, QJsonValue(bool, true))
      QVariant(QJsonValue, QJsonValue(double, 3.14159))
      QVariant(QJsonValue, QJsonValue(string, "Hello"))
      

       

      Expected QListView Text

      • true
      • 3.14159
      • Hello
      • true
      • 3.14159
      • Hello

       

      Actual QListView Text

      • true
      • 3.14159
      • Hello
      • Hello

      Attachments

        For Gerrit Dashboard: QTBUG-65082
        # Subject Branch Project Status CR V

        Activity

          People

            chehrlic Christian Ehrlicher
            jksh Sze Howe Koh
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes