Есть ли возможность вывода кастомного типа обернутого в QVariant в QDebug()?
| Код | #include <iostream> #include <string>
#include <QBuffer> #include <QMetaType> #include <QVariant> #include <QtDebug> #include <QDataStream>
Q_DECLARE_METATYPE(std::string)
QDataStream &operator<<(QDataStream &out, const std::string &myObj) { std::cout << __PRETTY_FUNCTION__ << myObj << std::endl; out << myObj.c_str(); return out; }
QDataStream &operator>>(QDataStream &in, std::string &myObj) { std::cout << __PRETTY_FUNCTION__ << myObj << std::endl; QByteArray bytes; in >> bytes; myObj.assign(bytes.data(), bytes.size()); return in; }
QDebug operator<<(QDebug dbg, const std::string& str) { std::cout << __PRETTY_FUNCTION__ << std::endl; dbg.nospace() << str.c_str(); return dbg.space(); }
int main(int argc, char *argv[]) { int string_id = qRegisterMetaType<std::string>("std::string"); qRegisterMetaTypeStreamOperators<std::string>("std::string"); QApplication app(argc, argv);
std::string str("ololo"); qDebug() << str; // "ololo" qDebug() << QVariant(string_id, &str); // "QVariant(std::string, )" qDebug() << QVariant(string_id, &str).value<std::string>(); // "ololo" }
|
имею в виду вывод "QVariant(std::string, )" т.е. тип выводится, но значение - нет.
собсно, как сделать, чтоб выводилось и значение.
thx |