I get problem when converting a QWidget* to QVariant, please see the following code and its output:
Qt Code:
  1. #include <QApplication>
  2. #include <QWidget>
  3. #include <QVariant>
  4. #include <QDebug>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. QApplication a(argc, argv);
  9. QWidget *widget= new QWidget();
  10. QObject *obj = widget;
  11.  
  12. //you can use all other methods like qVariantFromValue(widget)
  13. QVariant var1 = QVariant::fromValue(widget);
  14. QVariant var2 = QVariant::fromValue(obj);
  15.  
  16. qDebug() << "widget-addr=" << widget << "address saved to variant=" << var1;
  17. qDebug() << "object-addr=" << obj << "address saved to variant=" << var2;
  18. }
To copy to clipboard, switch view to plain text mode 
output:
widget-addr= QWidget(0x347748) address saved to variant= QVariant(QWidget*, )
object-addr= QWidget(0x347748) address saved to variant= QVariant(QObject*, QWidget(0x347748) )
Why line 13 doesn't work? Why it doesn't convert QWidget* to QObject* automatically? [I'm using Qt-4.7.3 and minGW]