QtoolButton *button = new QtoolButton; button->setDragEnabled(true); 显示setDragEnabled不是Qtoolbutton的成员函数
时间: 2024-05-17 17:18:47 浏览: 10
你好!我想指出一些可能会导致问题的地方。首先,QToolButton是一个类,而不是QtoolButton。其次,QToolButton确实有setDragEnabled()成员函数,但其拼写应该为setDragEnabeld()。因此,正确的代码应该是:
QToolButton *button = new QToolButton;
button->setDragEnabled(true);
相关问题
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实例上调用它,而不是在类名上调用它。
对于继承QDockWidget的控件Qtoolbutton,button->setDragEnabled(true);在Qt5.13.0中无法使用
对于继承自`QDockWidget`的控件`QToolButton`,是不支持直接调用`setDragEnabled()`方法启用拖拽功能的。但是可以通过重新实现`mousePressEvent()`和`mouseMoveEvent()`方法来实现拖拽功能。示例代码如下:
```
void MyToolButton::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
dragStartPosition = event->pos();
QToolButton::mousePressEvent(event);
}
void MyToolButton::mouseMoveEvent(QMouseEvent *event)
{
if (!(event->buttons() & Qt::LeftButton))
return;
if ((event->pos() - dragStartPosition).manhattanLength()
< QApplication::startDragDistance())
return;
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
// 设置拖拽数据
drag->setMimeData(mimeData);
// 启动拖拽
drag->exec(Qt::MoveAction);
}
```
在这个示例代码中,我们继承了`QToolButton`类,并重新实现了`mousePressEvent()`和`mouseMoveEvent()`方法。当鼠标左键按下时,记录鼠标位置;当鼠标移动到一定距离时,启动拖拽操作。在`mouseMoveEvent()`方法中,我们创建了一个`QDrag`对象,并设置了拖拽数据。最后,调用`exec()`方法启动拖拽操作。