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

时间:2016-05-31 11:40:00

标签: c++ qt

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

我尝试使用QFrame paintEvent在其上绘画,并且它有效,但是当我抓住QFrame内的窗口时它就移动了。

我知道QGraphicsView,但是我不能创建一个自定义类并基于它来推广它(它没有列出)。

如何从容器(QFrame,QGraphicsView或任何东西)创建自定义类,我可以覆盖绘制事件,如果我抓住它也不会移动窗口?

抱歉我的英语很差。

1 个答案:

答案 0 :(得分:0)

QGraphicsView继承自QAbstractScrollArea本身的QFrame

因此,您可以将QFrame保留在表单中,并将其提升为canvas类,但只需让canvas类继承QGraphicsView

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

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

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