C:\Users\PC\Desktop\Qtpro\imagedragdrop\mainwindow.cpp:68: error: no matching function for call to 'QDrag::setDragCursor(Qt::DropAction)' QDrag::setDragCursor(Qt::MoveAction); ^
时间: 2024-03-22 19:41:23 浏览: 125
QDrag::setDragCursor() 方法需要传入两个参数,第一个参数为鼠标光标的图标,第二个参数为拖放操作的类型。因此,在你的代码中应该这样写:
```cpp
drag->setDragCursor(QPixmap(":/images/move.png"), Qt::MoveAction);
```
其中,QPixmap(":/images/move.png") 表示设置鼠标光标的图标为一个指定的图片,Qt::MoveAction 表示设置拖放操作的类型为移动操作。
请注意,setDragCursor() 方法只是设置鼠标光标的图标和拖放操作的类型,并不会直接执行拖放操作。执行拖放操作需要调用 QDrag::exec() 方法。
相关问题
C:\Users\22836\Desktop\QT\untitled1\mainwindow.cpp:27: error: No matching member function for call to 'append'
非常抱歉,我的错误。QStringList确实有一个名为`append`的成员函数,而不是`push_back`。因此,你应该使用`append`函数来添加元素到QStringList中。
请将代码修改为以下形式:
```cpp
connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){
qDebug() << state << endl;
if (state == 2) {
strList.append(ui->checkBox->text());
}
//state 2选中 0未选中
});
```
通过使用`append`函数,你可以将元素添加到QStringList中。
非常抱歉给你带来了困惑。请尝试修改代码并重新编译,看看是否能够解决问题。如果还有其他问题,请随时向我提问。
C:\Users\PC\Desktop\Qtpro\imagedragdrop\mainwindow.cpp:68: error: cannot call member function 'void QDrag::setDragCursor(const QPixmap&, Qt::DropAction)' without object QDrag::setDragCursor(pixmap,Qt::MoveAction); ^
这个错误提示表示你需要先创建一个 QDrag 对象,然后调用 setDragCursor() 方法设置拖动时鼠标光标的图标和拖放操作的类型。
示例代码如下:
```cpp
QDrag *drag = new QDrag(this);
drag->setPixmap(pixmap);
drag->setHotSpot(event->pos() - child->pos()); // 设置拖动时鼠标光标的热点位置
drag->setDragCursor(pixmap, Qt::MoveAction); // 设置拖动时鼠标光标的图标和拖放操作类型
drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::MoveAction);
```
需要注意的是,创建 QDrag 对象后需要设置拖动时显示的图像和热点位置,才能正确显示拖动的效果。另外,setDragCursor() 方法只是设置鼠标光标的图标和拖放操作的类型,并不会直接执行拖放操作。执行拖放操作需要调用 QDrag::exec() 方法。
阅读全文
相关推荐















