今天遇到这样一个错误,记录一下。
..\QtDropGraphicsItem\graphicscoloritem.cpp: In member function 'virtual void GraphicsColorItem::mousePressEvent(QGraphicsSceneMouseEvent*)':
..\QtDropGraphicsItem\graphicscoloritem.cpp:39:67: warning: unused parameter 'event' [-Wunused-parameter]
void GraphicsColorItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
^~~~~
..\QtDropGraphicsItem\graphicscoloritem.cpp: In member function 'virtual void GraphicsColorItem::mouseMoveEvent(QGraphicsSceneMouseEvent*)':
..\QtDropGraphicsItem\graphicscoloritem.cpp:46:44: error: no matching function for call to 'QDrag::QDrag(QWidget*)'
QDrag *drag = new QDrag(event->widget());
^
In file included from C:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtGui/QDrag:1:0,
from ..\QtDropGraphicsItem\graphicscoloritem.cpp:5:
C:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtGui/qdrag.h:62:14: note: candidate: QDrag::QDrag(QObject*)
explicit QDrag(QObject *dragSource);
^~~~~
C:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtGui/qdrag.h:62:14: note: no known conversion for argument 1 from 'QWidget*' to 'QObject*'
..\QtDropGraphicsItem\graphicscoloritem.cpp: In member function 'virtual void GraphicsColorItem::mouseReleaseEvent(QGraphicsSceneMouseEvent*)':
..\QtDropGraphicsItem\graphicscoloritem.cpp:65:69: warning: unused parameter 'event' [-Wunused-parameter]
void GraphicsColorItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
^~~~~
mingw32-make[1]: *** [Makefile.Release:438: release/graphicscoloritem.o] Error 1
mingw32-make[1]: Leaving directory 'D:/StudyCodeDemo/build-QtDropGraphicsItem-Desktop_Qt_5_14_2_MinGW_64_bit-Release'
mingw32-make: *** [Makefile:45: release] Error 2
error: no matching function for call to 'QDrag::QDrag(QWidget*)'
QDrag *drag = new QDrag(event->widget());
总体分析,错误是在QDrap构造函数中没有匹配到QDrag(QWidget*)。
解决方法:
#include <QWidget>

本文记录并解决了Qt应用程序中使用QDrag时出现的构造函数不匹配问题,涉及QWidget与QObject之间的转换。
2400

被折叠的 条评论
为什么被折叠?



