Qt 设计师;难以将小部件放置在正确的父级中

Posted

技术标签:

【中文标题】Qt 设计师;难以将小部件放置在正确的父级中【英文标题】:Qt Designer; difficulty placing widgets in the right parent 【发布时间】:2011-04-15 09:37:42 【问题描述】:

使用 Qt 设计器,我在彼此中制作了几个 QFrame,每个都有一个水平布局。他们的样式表断言他们不应该有边距或填充。这意味着在 Qt Designers 视图以及最终结果中,QFrame 之间看不到任何空间。

使用拖放我可以将小部件放入窗口中,它会在将要放置的位置(在布局中)显示一条蓝线。但是,不可能将另一个 QFrame 添加到我看不到的 QFrame 父级(因此放弃)。右侧面板中还有一棵树,但放在父级上会使其自动进入其中一个子级...

例如,我有这个设置:

QMainWindow - QWidget - QFrame(父级) - QFrame(儿童) - QFrame(儿童)

添加一个新框架,无论我尝试什么,都会给我:

QMainWindow - QWidget - QFrame(父级) - QFrame(儿童) - QFrame(儿童) - QFrame(新孩子)

但我真的很想要:

QMainWindow - QWidget - QFrame(父级) - QFrame(儿童) - QFrame(儿童) - QFrame(新父母)

我还没有发现任何可以准确放置新小部件的功能吗?

【问题讨论】:

【参考方案1】:

您可以使用 Object Inspector 窗口,但您似乎无法粘贴到具有锁定布局的 QFrame 中。

所以考虑到你的布局:

QMainWindow
- QWidget
  - QFrame (A)
    - QFrame (B)
    - QFrame (C)
    - QFrame (D)

在 Object Inspector 窗口中选择 QFrame D 并剪切它,右键单击 QWidget 并破坏布局 (ctrl-0),然后粘贴。然后重新应用布局。

【讨论】:

更改布局以及添加框架和小部件肯定会很痛苦。根据您要更改的内容,通常需要打破布局。作为一个技巧,有时我使用设计器来创建一个临时表单/小部件。这可以像剪贴板一样来回剪切和粘贴组件组。 这是可行的,谢谢。它确实以这种方式撤消了 QWidget 的布局,我必须重新配置,还是这是不可避免的?【参考方案2】:

我使用的一种解决方法是选择要添加到的小部件,为该小部件的布局添加边距,拖放小部件,然后再次删除边距。这样,至少我在正确的小部件中得到了它。

【讨论】:

我在将布局相互放置时遇到了这个问题,所以另一个答案不起作用。谢谢! 呸,或者只是编辑 XML。我对设计师真的很失望。【参考方案3】:

在 Qt Creator 4.3 中,我还发现很难将项目拖到还没有项目的布局中。

让它工作的最简单方法是将Layout 添加到表单中。然后将您的项目从Toolbox 拖到Object Inspecter Window 中的布局上。 这会将项目添加到Layout

未知这是否适用于旧版本的 Qt Creator。

【讨论】:

以上是关于Qt 设计师;难以将小部件放置在正确的父级中的主要内容,如果未能解决你的问题,请参考以下文章

如何将小部件放置在具有成比例大小和位置的小部件上方

pyqt - 将来自 qt 设计器的子小部件定位在父级附近

PyQt 设计师提升小部件 - 引用***对象?

Qt将小部件添加到GraphicsView?

QT gui 项目不会缩小到其父小部件的 ft

将小部件放在 QScrollArea 的中心