Я нашел этот ответ на форуме QT от raven-worx (отдавая должное кредитам!)
В файле .h
:
QDebug operator<<(QDebug dbg, const MyType &type);
, где MyType
- ваш класс, например DataModel
, а type
- экземпляр, который вы будете отображать.
А в файле .cpp
:
QDebug operator<<(QDebug dbg, const MyType &type)
{
dbg.nospace() << "MyType(" << .... << ")";
return dbg.maybeSpace();
}
и вы можете использовать QDebug space()
, nospace()
и другие методы для точного управления отображением потока.
Так что для OP мы будем использовать:
// in the .h file:
class DataModel : public QAbstractTableModel {
// stuff
};
QDebug operator<<(QDebug dbg, const DataModel &data);
// in the .cpp file:
QDebug operator<<(QDebug dbg, const DataModel &data)
{
dbg.nospace() << "My data {" << data.someField << ',' << data.another << "}";
return dbg.maybeSpace();
}
// in some .cpp user of the class:
DataModel myData;
. . .
QDebug() << "The current value of myData is" << myData;