问题标签 [qlayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
38436 浏览

python - QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout

I want to create some tabs, and I read this answer: How to add a tab in PySide

I use the code in the answer and made some changes. Cause my code has to read some files and get the name of my tabs from those file, so that I add a for loop in my code. And here is my code.

It really shows up my tabs. However, I met a warning: QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout Since this tab code just a part of the whole code, the problem will block the data flow. And I have no idea what's wrong with it. I searched for answers, but other answer aren't written in python.

If anyone can help me, thanks in advance.

0 投票
3 回答
3952 浏览

qt - 使用布局创建自动缩放 Qt UI

我很感激有关如何创建由四个布局组成并具有以下属性的 Qt UI 的建议。

  1. UI 高度的任何增加都会被布局吸收,如下所示 在此处输入图像描述

  2. UI 高度的任何进一步降低都会被特定布局的内容所吸收,例如,如下所示的两个大按钮 在此处输入图像描述

0 投票
1 回答
201 浏览

c++ - 在不使用标准布局的情况下调整 qt 中的窗口大小

我正在使用 QT Creator,但我很难弄清楚如何在运行小部件时启用调整大小。我知道当您应用布局(水平、垂直和网格)时,它可以调整大小,但是当我使用这些标准布局时,它们会重新配置我放在窗口中的所有小部件。我正在尝试启用调整大小,但将所有小部件放在我希望它们所在的窗口中。

0 投票
1 回答
340 浏览

c++ - 如何在不使用 QSpacerItems 的情况下将 QBoxLayout 中的项目居中

AQLayout总是尝试使用QWidget. 但是,有时,您希望它保持最小尺寸并以小部件为中心...因为您觉得它看起来更好(如果布局仅包含没有意义的项目,显示大于其默认尺寸:QLabelQPushButton和类似的东西)。

过去我遇到过这个问题数百次,我总是在各处添加愚蠢的 QSpacerItems 来解决这个问题。我想知道是否有更好的解决方案。

我将问题隔离为一个说明:

没有垫片,它看起来像这样:

在此处输入图像描述

我讨厌这个显示器,QWidget你的眼睛必须在小部件周围四处寻找相关信息。

使用垫片,它的外观如下:

在此处输入图像描述

我更喜欢它。

有没有办法在不添加垫片的情况下做到这一点?添加它们并且总是必须指定所有这些参数是一件痛苦的事情(默认值不会做你想要的......)。

我尝试使用QLayout::setSizeConstraint没有成功。似乎不打算这样做。

0 投票
2 回答
1945 浏览

qt - QMdiArea:第一个选项卡工作正常,第二个选项卡的内容太小

情况:作为我的应用程序的中心小部件,我有一个处于选项卡模式的QMdiArea (包装在从QMdiArea继承的自定义类中)。当我现在通过一切添加第一个QMdiSubWindowaddSubWindow()时,一切都很好,这意味着窗口及其内容被最大化以占用QMdiArea的所有空间。但是,一旦我添加了第二个子窗口,就会出现以下问题:

问题:第二个窗口的内容没有显示,而是第一个窗口的内容继续显示(尽管第二个选项卡在视觉上具有焦点),但尺寸减小了。它只占用几个像素。但是,如果我现在切换回第一个子窗口/选项卡(通过单击缩小尺寸的小部件,然后自动返回到最大尺寸或通过选择第一个选项卡标题),然后再次选择第二个,一切都很好 =第二个选项卡的小部件/编辑器现在显示并最大化。

但直到我关闭第二个选项卡,在这种情况下,第一个选项卡的内容才会显示(如预期的那样),但同样只能以小尺寸显示!

截屏: 概述问题的屏幕截图

另一个相关的测试用例:创建第一个选项卡并按预期显示全尺寸。如果我现在简单地调整整个QMainWindow的大小,我的选项卡中的小部件周围会突然出现一个模糊的边框。因此,它似乎处于最大化模式和带边框的正常模式之间的混合状态。这会产生任何新的潜在客户吗?

截屏:

概述相关问题的屏幕截图

到目前为止,我没有使用任何明确定义的布局,但鉴于第一个选项卡工作正常,并且在手动来回切换所有其他选项卡之后,我认为它应该可以不使用。

我需要设置显式布局对象吗?为什么它适用于第一个选项卡,而不适用于第二个?

一些代码作为基础:这是在我的自定义QMdiArea类中执行的逻辑,负责添加新的孩子:

更新:添加了N1ghtLight 提出的 hack。在编码中如此标记。

更新 2:编辑/更正问题描述 + 带有屏幕截图的新测试用例。

0 投票
1 回答
543 浏览

c++ - Qt - 如何在 Qt 设计器中使用布局

我在使用布局时遇到了一些麻烦。如您所知,Qt 设计器默认有一些布局,但它们无法帮助我。在布局部分的小部件栏中,有一些自定义布局,但我无法使用它们,当我将它们插入我的 ui 时,它们实际上什么都不做。现在有人可以帮我使用它们吗?对不起,如果我的英语不是那么好。顺便说一句,它不是我的第一语言。

0 投票
1 回答
537 浏览

c++ - QMainWindow 中未显示小部件

晚上好,

目的是有一个主窗口(没有 Designer 而是通过编码创建),三个部分彼此相邻:

  1. 数据点列表(向量)
  2. 数据点统计
  3. 数据的图形摘要(直方图)

我已经开始创建自己的小部件并绘制图表(到目前为止只是一条用于测试目的的线)。但是,虽然显示了 tableview 小部件,但未显示“图表”小部件(类histogram的实例)(应该是第三个垂直列)。

Stackoverflow 中一个非常相似的问题给了我一些方向。但是,虽然它帮助我用表格显示小部件,但我不知道如何显示我的自定义小部件。

帖子:小部件未显示在 qt 主窗口中

我还查阅了文献(Jürgen Wolff 的 Summerfield 和 Qt4 Hui Entwicklung mit C++),但他们只有一个中央小部件的示例。

截屏: 在此处输入图像描述

备注:使用此代码

我能够使用测试图创建一个单独的小部件。(删除了父信息并调用了 diagram->show())

0 投票
1 回答
29994 浏览

c++ - 将 QLabel 添加到 QWidget

我是 Qt 和 C++ 的新手,正在开发一个应用程序,我正在尝试添加QLabel一个QWidget, 使用QHBoxLayout. 我正在将标签的文本设置为某些内容,但它在标签中不可见。

这是一段代码:

styleSheet 用于添加了 QLabel 的 Widget。

该字符串"Random String"不会显示在标签内。

请帮忙。

0 投票
1 回答
386 浏览

c++ - 派生 QMainWindow 并更改其布局

我在定制方面遇到了很大的问题,QMainWindow因为我不知道如何实现以下目标:

QMainWindow文档中,QMainWindow提供了一些用于工具栏、停靠小部件、状态栏和其他的特殊区域:

在此处输入图像描述

现在我想要的是为新的自定义类型的小部件提供一个新的自定义区域,例如:

在此处输入图像描述

我尝试派生QWidget并放置我的自定义小部件,并在其下方放置一个 QMainWindow 但使用这种方法我必须将所有标准QMainWindow方法从我的孩子重定向QWidget到它的QMainWindow孩子,这非常不方便。

我的问题是:是否可以自定义QMainWindow布局并在标准布局中添加额外的区域,如Custom Widget上图中的区域?

0 投票
1 回答
124 浏览

c++ - 有什么方法可以暂时停止重新计算布局?

我正在实现一个拖放事件过滤器以重新排列布局中的小部件,并在某一时刻将其中几个弹出到队列中,在拖动的小部件所在的位置添加一个橡皮筋,然后将其余小部件添加回布局(因为似乎没有办法使用 QLayout 界面“插入”),如下所示:

这种方法的问题是添加/删除小部件会导致非常明显和讨厌的闪烁。有没有

  1. 我可以通过某种方式阻止布局重新计算自身,直到完成所有添加/删除操作,或者
  2. 将小部件插入布局(仅使用QLayout界面)不会导致闪烁的更好方法?