问题标签 [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 回答
1480 浏览

qt - 隐藏 QWidget 但保留空白空间,因此布局中没有效果

有一个QVBoxLayout在其中QHBoxLayout添加了许多。原则上,每个QHBoxLayout都有相同的小部件集。事实上,我隐藏了一些小部件,这会导致其他小部件变大以占用空间。

是否可以保留空白空间?理想情况下,我希望其他小部件位于相同位置且大小相同。

0 投票
2 回答
915 浏览

c++ - doLayout:如何在另一个小部件之上设置几何图形?

我想在这里创建自定义布局:http: //doc.qt.io/qt-5/qtwidgets-layouts-flowlayout-flowlayout-cpp.html

我想要一些方法将复选框放在自定义按钮的顶部。目前有

按钮和复选框的方法,但无论我是为按钮还是复选框首先仍然复选框出现在按钮“下方”,我看不到/单击它。

我怎样才能把复选框放在按钮的顶部?

0 投票
1 回答
1011 浏览

c++ - Qt将两个小部件“粘合”在一起

我有两个小部件(两个QFrames),它们都没有与之关联的任何标题栏(我通过 实现setWindowFlags(Qt::FramelessWindowHint))。其中一个是主窗口小部件,另一个是侧边栏类型的窗口小部件,它应该贴在它的右边界(它的高度大约是主窗口小部件的 1/4)。

我不能通过QFrame静态定位使它们都保持透明,因为主小部件可以通过其顶部拖动(因为它上面缺少标题栏,我通过拦截mousepress/mousemove事件并相应地移动它来手动完成)。主小部件上的自定义拖动工作正常,但是当我尝试同时移动侧边栏时,两者之间会出现非常明显的视觉延迟,将主小部件向左拖动时两者之间会出现短暂的间隙,或者向右拖动主窗口小部件时两者之间的瞬时重叠(侧边栏不可拖动,没有为其实现拖动逻辑)。

我如何将这两个小部件“粘合”在一起,以便它们一直一起移动而没有任何延迟?我浏览了 Qt 文档,可能在QDockWidget这里可以提供帮助,但我不明白如何。这里的主要小部件不是QMainWindow.

平台 - OS X Yosemite,Qt 5.3.1,32 位。

0 投票
2 回答
8521 浏览

qt - 设置 QFormLayout QLabel 的垂直对齐方式

我正在使用 PySide/PyQt,但这是一个通用的 Qt 问题。

有没有办法设置 QFormLayout 以便标签垂直居中而无需显式创建 QLabel 并将其垂直大小策略设置为先扩展?当第 2 列中的小部件高于我的标签时,我希望我的标签与小部件垂直居中,而不是与其顶部对齐...

这是一个演示该问题的示例脚本。我将标签涂成红色以更好地展示它们的尺寸行为。

结果如下:

带有左上对齐标签的 QFormLayout 示例

这是一个示例,通过显式创建 QLabel 并为它们提供扩展大小策略来演示所需的结果:

这就是结果......

带有垂直扩展标签的 QFormLayout

我试过QFormLayout.setLabelAlignment()似乎没有帮助。文档甚至提到 setLabelAlignment 仅对标签进行水平对齐(即使这样似乎也不会居中,只是向左或向右)。

顺便说一句,这导致我也尝试将水平对齐设置为居中,但事实证明这更加困难,因为标签不会水平扩展以填充空间(小标签不会扩展以匹配最大的标签)。我可以获得水平居中标签的唯一方法是在显示小部件后显式找到最大标签的宽度,然后将所有其他标签设置为具有相同的宽度......

结果是:

在此处输入图像描述

我在 QFormLayout 级别是否缺少任何将标签居中的内容?我是否必须制作 QLabels 并设置为扩展或事后打开扩展(如下所示)?感谢您的任何想法!

0 投票
1 回答
29108 浏览

python-3.x - PyQt5 - 在 MainWindow 布局的背景中添加图像

PyQt5 的新手......这是一个非常基本的问题。

我想在小部件的布局中添加图像。这个小部件是我的应用程序的主窗口/根小部件。我使用以下代码,但收到一条错误消息。

显然 QLayoutWidget 不接受 QImage 作为输入。是否有解决方法让图像在 QWidget 中显示为背景?

0 投票
0 回答
894 浏览

qt - 简单的功能区:自动调整工具栏和选项卡的大小

我正在尝试使用 Qt5 实现简单的选项卡式界面。我将 QTabWidget 与放置在其选项卡内的 QToolBars 一起使用,并将 QActions 添加到 QToolBars:

关联

下面的工具栏和小部件位于垂直布局中。我希望工具栏自动调整它们的高度以使其高度足以容纳 QToolButtons 内部(最后一个可以显示图标、文本或两者(图标下或右侧的文本),这会影响它们的高度)和自动调整它们的宽度以显示尽可能多的工具按钮,以适应父选项卡的宽度。此外,我希望父选项卡能够自动拉伸或缩小它们的高度,以便能够在其中显示工具栏。在Qt中可能吗?如果是,那么如何?

UPDATE1:水平自动拉伸已经通过使用工具栏作为 QTabWidget 的选项卡小部件来完成。但是垂直的仍然缺失。重要代码(用于 QDesigner):

当前,当窗口垂直调整大小时,选项卡小部件也会垂直调整大小。但我希望它仅根据包含的工具栏的高度调整大小,并在调整父窗口大小时保持其高度。

UPDATE2:预期的垂直自动调整大小是通过将 QTabWidget 垂直大小策略设置为 Fixed 并将垂直大小策略下方的 QScrollArea 设置为 Expanding 来完成的。现在对上面列出的 UI XML 进行了相应的修改。

0 投票
1 回答
1810 浏览

c++ - 获取 Qt 布局方向以在级联菜单中使用从右到左的功能(例如阿拉伯语)

我正在OS X 10.11上编写QT5.5应用程序。我已经实现了在语言之间动态切换的菜单选项,包括为从右到左的语言设置Qt::LayoutDirection 。作为从右到左语言支持的模型,我用阿拉伯语创建了一个测试应用程序和翻译文件。这是一个屏幕截图:

menus_screenshot

我对阿拉伯语的完全无知在这里对我没有帮助——显示的翻译来自谷歌翻译(我会在完成后让应用程序专业翻译)。然而,这种行为看起来只是部分正确。

这些功能符合我的期望:

  • “文件”/“编辑”/“选项”菜单项从屏幕右侧开始
  • “选项”的“语言”子菜单级联到“选项”主菜单的左侧

但是,以下功能与我的期望不符:

  • “选项”菜单的“第一”/“第二”/“第三”/“语言”菜单项是左对齐而不是右对齐
  • 复选标记位于条目的左侧而不是右侧
  • “语言”子菜单的子菜单级联箭头指向右侧而不是左侧

因此,我的第一个问题是,我的期望是否错误,界面实际上是否在阿拉伯语中表现正确,或者需要修复什么?

更新:我讲阿拉伯语的同事确认上面的屏幕截图在我提到的意义上是错误的,它应该看起来像这样:

在此处输入图像描述

我的第二个也是现在主要的问题是如何修复任何错误以使 Qt 级联菜单对从右到左的语言正常运行?

我在下面包含了这个独立示例的完整代码以及我使用的翻译的 Qt“.ts”文件。

和翻译文件:

我本来希望该app.setLayoutDirection( Qt::RightToLeft );行对所有小部件和子小部件都“做了正确的事情”,但事实并非如此。也许虽然它做到了?任何帮助将非常感激。

谢谢

0 投票
1 回答
2884 浏览

python - PyQt5 将自定义 QWidget 添加到 QLayout

目前我正在尝试将自定义 QWidget 类添加到 QVBoxLayout。我遇到的问题是小部件根本没有出现在布局中。我什至尝试设置 QWidget 的最小大小,因为我认为小部件没有显示,因为它的默认大小设置为零。

这是类的简化:

我删除了滑块和 LCD 屏幕之间的信号和插槽,因为我不担心这里的功能。只有我在以下代码中的两个按钮之间直接得到一个灰色区域 QSize(400,300):

所以我要做的是创建 3 个小部件,并将它们放入中央小部件的 QVBoxLayout 中。2个按钮小部件w1w3出现,但我的自定义小部件没有出现,并且通过增加小部件的大小仅在和setMinimumSize之间添加灰色间距。w1w3

所以小部件在那里,只是由于某种原因不可见。我对 PyQt 很陌生,所以请解释为什么会发生这种情况。

0 投票
2 回答
10619 浏览

c++ - 对齐来自 QLabel 和 QLineEdit 的正确文本

我有一个QLabel略低于 a 的QLineEdit具有相同大小和对齐属性的:

这是如何呈现的:

在此处输入图像描述

如何让底部的文本与 的文本label完全右对齐lineEdit

如果您找到适用于所有平台的解决方案,并且在lineEditlabel.

0 投票
3 回答
3798 浏览

qt - QT。向 QLayout 添加新布局

我在运行应用程序时动态创建接口。

1) 我有带有 4 个预定义选项卡的 QTabWidget。但我必须只显示 1 或 2 个选项卡,以防用户选择。在 StackOverflow 上我了解到,我必须将所有选项卡保存在集合中才能添加和销毁它。

我有 QHash:twInputMethodsTabs = new QHash< int, QPair<QWidget*, QString> >();

第一个参数 = 索引;第二 = 选项卡小部件;第三 = 选项卡小部件标题文本;

2)我这样填写集合:

3)我在标签中添加新的小部件,如下所示:

twInputMethodsTabs->value(1).first->layout()->addWidget(cmbbCommands);

4) 如何向此小部件添加新布局?我想这样做:

但它不起作用,因为layout()返回QLayoutwhich haventaddLayout()函数。我怎么能这样做?

或者我应该如何改变代码架构来做到这一点?