Qt error: no matching function for call to ‘QDrag::QDrag(QWidget*)‘

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

今天遇到这样一个错误,记录一下。

..\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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“不靠谱”的深度体验派

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值