从Qt4迁移到Qt5:没有匹配函数

从Qt4迁移到Qt5:没有匹配函数,qt4,migration,qt5,Qt4,Migration,Qt5,使用Qt5构建Qt4项目时出现编译时错误: error: no matching function for call to 'MainWindow::connect(QPrintPreviewWidget*, const char*, MainWindow*, const char*)' connect( dlgPrintPreview.previewWidget(), SIGNAL( paintRequested( QPrinter* ) ), this, SLOT( pri

使用Qt5构建Qt4项目时出现编译时错误:

error: no matching function for call to 'MainWindow::connect(QPrintPreviewWidget*, const char*, MainWindow*, const char*)'
         connect( dlgPrintPreview.previewWidget(), SIGNAL( paintRequested( QPrinter* ) ), this, SLOT( printConflictReport( QPrinter* ) ) );
                                                                                                                                         ^
...

C:\Qt\5.4\mingw491_32\include/QtCore/qobject.h:196:36: note: static QMetaObject::Connection QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
     static QMetaObject::Connection connect(const QObject *sender, const char *signal,
                                    ^
C:\Qt\5.4\mingw491_32\include/QtCore/qobject.h:196:36: note:   no known conversion for argument 1 from 'QPrintPreviewWidget*' to 'const QObject*'
我在.pro文件中包含了printsupport和Widget,用QtWidget替换了QtGui-没有任何帮助!
我做错了什么?感谢您提供的任何帮助

包括?是的!!!非常感谢,@peppe-我将QPrintPreviewWidget包含到MainWindow.cpp中,它解决了这个问题!学习阅读编译器的错误。这并不是说它不知道QPrintPreviewWidget,而是说它不能将QPrintPreviewWidget*转换为常量QObject*。现在const转换是免费的,但是既然QObject是QPrintPreviewWidget的公共基,那么为什么其他转换是不可能的呢?这意味着编译器不知道QObject是一个基。因此编译器没有看到QPrintPreviewWidget定义。因此,缺少一个include。再次感谢@peppe,但我不明白在使用Qt4:1时,以下情况是如何在没有任何错误的情况下进行编译的。在文件printpreviewdialog.h中:QT_BEGIN_命名空间类QPrintPreviewWidget;QT_END_命名空间2。在文件mainwindow.cpp中:include printpreviewdialog.h无法在注释中插入换行符,抱歉:可能其他标题包含了该标题,因此您可以间接包含该标题。谁知道呢。如果您没有为所使用的内容包含正确的include,则Qt不保证源代码兼容性: