C++ 从QToolBar拖放到QGraphicsView的操作未按预期进行
我正在使用C++ 从QToolBar拖放到QGraphicsView的操作未按预期进行,c++,qt,drag-and-drop,qgraphicsview,qtoolbar,C++,Qt,Drag And Drop,Qgraphicsview,Qtoolbar,我正在使用qtc++进行一个项目。我有一个QToolBar,其中包含一些QButtons(读作QAction)和QGraphicsView(整个底部)。 看起来像这样 现在,我想将QToolBar中的QButton(读作QAction)拖动到我的应用程序的中央窗口(实际上是QGraphicsView) 到目前为止,我已经为相应的QAction编写了以下SLOT,以启用拖放 /* Send_Message is one of the actions */ void CTestBuilderApp
qtc++
进行一个项目。我有一个QToolBar
,其中包含一些QButton
s(读作QAction
)和QGraphicsView
(整个底部)。
看起来像这样
现在,我想将QToolBar
中的QButton
(读作QAction
)拖动到我的应用程序的中央窗口(实际上是QGraphicsView
)
到目前为止,我已经为相应的QAction
编写了以下SLOT
,以启用拖放
/* Send_Message is one of the actions */
void CTestBuilderApp::on_actionSend_Message_triggered()
{
QByteArray itemData;
QDataStream dataStream(&itemData, QIODevice::WriteOnly);
emit selectionState(None);
dataStream << "Send Message";
QMimeData *mimeData = new QMimeData;
mimeData->setData("application/x-dnditemdata", itemData);
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
drag->setPixmap(ui->ToolBox->actions().at->icon().pixmap(48,48));
drag->exec(Qt::CopyAction, Qt::CopyAction);
qDebug()<<"drag complete";
}
/*发送消息是其中一项操作*/
void CTestBuilderApp::on_actionSend_Message_triggered()
{
QByteArray项目数据;
QDataStream数据流(&itemData,QIODevice::WriteOnly);
发射选择状态(无);
数据流setData(“应用程序/x-dnditemdata”,itemData);
QDrag*拖动=新的QDrag(本);
拖动->设置mimeData(mimeData);
拖动->设置pixmap(ui->工具箱->操作().at->图标().pixmap(48,48));
拖动->执行(Qt::CopyAction,Qt::CopyAction);
qDebug()您应该实现QGraphicsView插槽(因此需要将其子类化):
在QGraphicsView构造函数中,您必须接受删除:
setAcceptDrops(true);
在所有插槽中,您必须接受操作以允许流量:
enter -> move -> drop
您应该实现QGraphicsView插槽(因此需要将其子类化):
在QGraphicsView构造函数中,您必须接受删除:
setAcceptDrops(true);
在所有插槽中,您必须接受操作以允许流量:
enter -> move -> drop