【发布时间】:2023-12-25 16:13:01
【问题描述】:
我有几个 QWidget,比如说 previewWidget,每个都包含 2 个 QLabel(可能比 QLabel 更多)。我想在主窗口中拖放 previewWidget。
问题:我可以通过在绿色区域(PreviewWidget 区域)上按下鼠标来移动小部件。但是,如果我尝试通过单击其中一个标签来拖动小部件,则该标签会移出 previewWidget(有时我什至不明白会发生什么)。我想要的是移动整个 previewWidget 或者当鼠标按下它的孩子时至少没有发生任何事情。
我的方法。我重载了 mousePressEvent() 如下:
void MainWindow::mousePressEvent(QMouseEvent *event)
{
// I beleive my problem is right here...
PreviewWidget *child = static_cast<PreviewWidget*>(this->childAt(event->pos()));
if (!child)
return; // this is not returned even if the child is not of a PreviewWidget type
// Create QDrag object ...
}
如何以我想要的方式拖放 PreviewWidget?任何例子都值得赞赏。
【问题讨论】:
-
您尝试
Qt::WA_TransparentForMouseEvents获取标签了吗? -
我重载了标签的 mousePressEvent() 方法并将它们留空。现在,当我拖动标签时它什么也不做,到目前为止就足够了。关于您的建议,我不希望它们对鼠标事件完全透明。
标签: c++ qt drag-and-drop qt5