如何禁用窗口在区域内移动

How disable window move inside an area?

本文关键字:移动 区域 何禁用 窗口      更新时间:2023-10-16

我正在尝试在Linux上用QT编写电路设计器软件。我正在使用 KDE 5 Plasma 桌面和 QTCreator 作为 IDE。

我尝试使用QFrame paintEvent在上面绘画,它起作用了,但是当我抓住QFrame内部的窗户时,它移动了。

我知道QGraphicsView,但我无法制作自定义类并基于此对其进行推广(未列出)。

如何从容器(QFrame,QGraphicsView或任何内容)创建自定义类,我可以在其中覆盖paint事件,并且如果我抓住它,它也不会移动窗口?

对不起,我的英语不好。

>QGraphicsView继承自QAbstractScrollArea继承自QFrame本身。

因此,您可以将QFrame保留在窗体中,并将其提升为画布类,但只需使画布类继承QGraphicsView即可。

虽然,我的Qt在行为上与OP有两个不同(但我不使用KDE):

  • 单击QFrame并移动鼠标对我来说不会移动整个窗口。我想可以通过在 canvas 类中重新实现 void mousePressEvent ( QMouseEvent * event ) 并为其提供空代码来更改 OP 的这种行为。(文档)
  • 我可以将QGraphicsView放入我的 ui 文件中,并且可以右键单击它们以将它们提升到另一个自定义类。

编辑:找到了窗口在 KDE 上移动的原因!