我正在使用Qt C++
. 我有一个QToolBar
包含一些QButton
s (读作QAction
)和 a QGraphicsView
(整个底部)。它看起来像这样。
现在,我想将一个QButton
(读作QAction
)从我的应用程序的QToolBar
中央窗口(实际上是QGraphicsView
)中拖动。
到目前为止,我已经编写了以下内容SLOT
以对应QAction
启用拖放。
/* 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";
}
但是,由于SLOT
仅当我在click
ing 上时才调用它QAction
,所以我没有得到正确的拖放效果。当我单击按钮时,才开始拖动。单击QAction
然后再单击就QGraphicsView
可以完成这项工作,但这不是拖放应有的效果。它不是从按下然后拖动开始的。
有没有办法让这段代码工作?我正在寻找一些SLOT
在我按下QAction
ie 后立即被调用的内容,它不会等待鼠标释放工作。