如何理解if (drag->exec(Qt::MoveAction) == Qt::MoveAction)
时间: 2024-05-19 07:16:46 浏览: 17
这是一行 C++ 代码,用于实现拖动控件的功能。if 条件语句内部使用了 Qt 库中的 drag->exec 函数执行了一个拖放操作,参数为 Qt::MoveAction,表示拖动时移动控件而不是拷贝。如果执行结果是 Qt::MoveAction,即表示拖动成功,并且返回值与参数相同。因此,整个条件语句的意思是,如果拖动操作成功并且返回值为 Qt::MoveAction,就执行其后面的代码。
相关问题
if(drag->exec(Qt::CopyAction|Qt::MoveAction,Qt::MoveAction) == Qt::MoveAction){ qDebug()<<"is move"; child->close(); } else{ qDebug()<<"is copy"; child->show(); child->setPixmap(pixmap); }
这是一个 Qt 应用程序中的部分代码,主要是实现拖放操作的功能,包括拖动操作和复制操作。其中,drag 是一个 QDrag 对象,child 是一个 QLabel 对象,pixmap 是一个 QPixmap 对象,用于存储被拖动的图像。具体解释如下:
- exec() 方法用于执行拖放操作,第一个参数指定拖放操作的类型,第二个参数指定默认的操作类型。
- 如果执行的操作类型为 Qt::MoveAction,表示是移动操作,此时关闭 child 窗口。
- 如果执行的操作类型为 Qt::CopyAction,表示是复制操作,此时显示 child 窗口,并设置其显示的图像为 pixmap。
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() 方法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)