button->setDragEnabled(true);在Qt5.13.0中无法使用
时间: 2024-02-18 12:00:11 浏览: 27
在Qt5.13.0中,`setDragEnabled(true)`已经被废弃。如果要启用拖拽功能,可以使用`setDragDropMode(QAbstractItemView::DragDrop)`方法。示例代码如下:
```
button->setDragDropMode(QAbstractItemView::DragDrop);
```
这样就可以启用拖拽功能了。
相关问题
toolButton->setDragEnabled(true);语句显示错误
如果你在Qt的设计界面中创建QToolButton并将其添加到QDockWidget中,那么你可以在该QToolButton的属性界面中将"Drag Enabled"属性设置为True。这样就可以在运行时拖拽该QToolButton了。
如果你在代码中动态创建QToolButton,那么你需要将其setDragEnabled属性设置为True,以启用拖拽功能。以下是示例代码:
```cpp
QToolButton *toolButton = new QToolButton(this);
toolButton->setText("My Button");
toolButton->setAutoRaise(true);
toolButton->setCursor(Qt::OpenHandCursor);
toolButton->setStyleSheet("QToolButton:hover { background-color: #EFEFEF }");
toolButton->setDragEnabled(true); // 启用拖拽
QDockWidget *dockWidget = new QDockWidget("My Dock Widget", this);
dockWidget->setWidget(toolButton);
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
```
请注意,setDragEnabled是QToolButton的成员函数而不是静态函数,因此您需要在QToolButton实例上调用它,而不是在类名上调用它。
setDragEnabled(true);在Qtoolbutton中显示错误
如果在QToolButton的构造函数中调用setDragEnabled(true)出现错误,可能是因为QToolButton并没有该函数。相反,你应该在QToolButton的父对象中调用setDragEnabled(true)来启用拖放操作。例如,如果你的QToolButton是QToolBar的子项,你可以在QToolBar的构造函数中添加以下代码:
```
setAcceptDrops(true);
setDragEnabled(true);
```
这样可以启用QToolBar和其子项的拖放操作。另外,你还需要在QToolButton中重写mouseMoveEvent()函数,以便正确处理拖放操作。例如:
```
void QToolButton::mouseMoveEvent(QMouseEvent *event)
{
if (!(event->buttons() & Qt::LeftButton))
return;
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
// 将需要拖拽的数据添加到mimeData中,例如文本或图片等
drag->setMimeData(mimeData);
drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);
}
```
这里我们使用QDrag类来创建拖动操作,并将需要拖动的数据添加到QMimeData对象中。当然,你需要根据你的实际需求进行修改。希望能帮助到你解决问题。
阅读全文