具体实现步骤
首先是目标窗口
目标窗口TargetWidget需要接受拖动事件,在构造函数中设置
this->setAcceptDrops(true);//支持拖动操作
实现拖动进入和放下两个函数
void SliceBrowseWindow::dragEnterEvent(QDragEnterEvent *event)
{
//这句话让该窗口可以捕捉到dropEvent事件
event->acceptProposedAction();
QWidget::dragEnterEvent(event);
}
void SliceBrowseWindow::dropEvent(QDropEvent * event)
{
//拖动完成:业务代码,一般是修改目标窗口内容,刷新目标窗口,也就是当前窗口
auto source = event->source();
auto fromWindow = ***::Instance()->GetMovingSeriesWindow();
***::Instance()->SetMovingSeriesWindow(nullptr);
auto fileList = SeriesMgr::Instance()->GetSeries(fromWindow->GetSeriesId()).GetSliceFileFullPathList();
this->

本文介绍了如何在QT环境中实现窗口的拖动功能。首先,目标窗口需在构造函数中设置接受拖动事件,并实现拖动进入和放下的处理函数。其次,源窗口应在鼠标按下时准备拖动状态,特别是在QT与VTK结合的程序中,需在VTK的鼠标回调函数中处理。拖动过程中,可以显示源窗口的缩略图截图。
订阅专栏 解锁全文
797

被折叠的 条评论
为什么被折叠?



