问题标签 [qtoolbar]

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 回答
442 浏览

qt - 如何获取 qtoolbars 订单

我需要在我的应用程序中保存和恢复 QToolbars 的位置。当工具栏停靠到不同的区域时,我可以保存该区域并在函数 QMainWindow::addToolBar 中分配它。但是当几个工具栏停靠在同一个区域时,我不知道它们当前在屏幕上的顺序是什么。我试过了

但这似乎按创建顺序返回工具栏,而不是屏幕上当前的排列方式(用户可以移动它们)。

0 投票
4 回答
8881 浏览

c++ - QToolBar 背景颜色只适用于动作

我正在尝试在 Qt 设计器中使用以下样式设置 QToolBar 的免费颜色background : rgb(30, 30, 30)。由于某种原因,背景颜色仅应用于动作的背景,如图像中所示。如何更改整个工具栏的颜色?

在此处输入图像描述

编辑。

即使我更改了整个窗口的背景颜色,工具栏区域也不会受到影响:

在此处输入图像描述

这是一个空的默认 Qt 小部件应用程序,我只在我的 QMainWindow 的样式表中添加了一个 QToolBar 和一个 QAction

这是预期的行为还是 qt 与 linux 的错误?

编辑。

我在带有 Qt 4.8 和 Qt 5.4.2 的 Xubuntu 14.04 上尝试了这段代码。这似乎是 Qt 上的一个错误。请参阅下面我自己的答案。

0 投票
2 回答
835 浏览

c++ - 总是在 QToolbar 中显示第二行

实际行为

我将顶部区域的工具栏分两行排序,例如

导致与使用 Qt Designer 的示例类似的结果。如您所见,顶部工具栏布置成两行。 工具栏分布在两行

现在,第二行中的工具栏(即m_toolbar_3,m_toolbar_4m_toolbar_5)被隐藏是很常见的。这会导致整个第二行消失,如以下屏幕截图所示。 在此处输入图像描述

期望的行为

我希望始终显示第二个工具栏行,无论其中是否有可见的工具栏。

这是为了避免不断出现/消失的工具栏的视觉噪音。视觉噪音在中央小部件(放置“Form ...”的位置)中特别容易识别,它可以向上或向下移动。

有没有办法做到这一点?

0 投票
1 回答
195 浏览

c++ - 向 QToolBar 添加一些文本

我在 QToolBar 中添加一些文本时遇到问题。我只能添加操作。此外,我的 QToolBar 中有两个带有各自图标的操作,但我想将它们分开,但我也不能。

我的新手方法是添加空动作来模拟图标之间的空格。但是用户可以点击空白处。

我正在使用 QT Creator 的设计功能。一些帮助将非常感激。

0 投票
2 回答
2035 浏览

python - 在 PyQt 中的给定 QToolBar 对象上迭代 QAction 项?

使用 Python 和 PyQt4,给定一个带有任意数量 QToolBar 对象的 GUI,并且每个工具栏包含任意数量的 QAction 对象。

我可以使用以下代码迭代 ui 并找到工具栏:

如何迭代每个工具栏对象并找到 QAction 对象。然后我将阅读 QActions 以确定哪些是“检查”的。我没有使用 QActionGroups。

0 投票
0 回答
52 浏览

macos - QToolbar OS X 无悬停效果

我在 OS X 上发现了 QToolbar 的一个奇怪行为。我有一个带有操作的工具栏,每个操作都有图标:

在此处输入图像描述

那挺好的。不幸的是,当鼠标指针位于动作上方时,该动作不会突出显示:

在此处输入图像描述

工具提示成功出现,当我单击该操作时,它的 trigger() 事件被成功触发。我对 MainMenu 和工具栏使用相同的操作。有没有办法启用这种悬停效果?

0 投票
1 回答
363 浏览

c++ - QToolBar 子列表总是在增长。Qt内存泄漏?

我希望只有一个 QToolBar 实例并在我的应用程序执行期间对其进行多次修改。但是,我担心 Qt 完成的内存管理。

考虑以下:

最初,QToolBar 中的操作列表是空的。因此第一个 cout 打印“0”。通过“addSeparator”将一个内部操作添加到该列表中。所以第二个 cout 打印“1”。最后,“清除”,如预期的那样,删除所有操作,最后一个 cout 再次打印“0”。

现在,考虑一下“孩子列表”会发生什么:

最初,孩子列表的大小为 3。然后我调用“addSeparator”并将两个人添加到该列表中。好吧,我可以忍受。然而,在调用“清除”这些家伙之后,这些家伙并没有被删除。对于每个“addSeparator”或“addWidget”调用,都会添加两个孩子并且永远不会删除它们。

我将 Qt 5.4.1 用于 MSVC 2013,Windows。


编辑:添加peppe建议的代码。请阅读行注释。

0 投票
1 回答
2120 浏览

qt - 简单的功能区:如何在 QTabBar 中使用 QActions?

我正在尝试使用 Qt5 实现简单的选项卡式界面。我使用QTabWidgetwith QToolBars 放置在其选项卡中,并将QActions 添加到QToolBars 中。

这可行,但会导致以下问题:任何操作仅在其父选项卡处于活动状态时仍可访问。如果我尝试对当前“不可见”的操作使用键盘快捷键,我将不会成功。由于没有菜单等,选项卡是唯一放置操作的地方。

以下是我将元素添加到工具栏的方法:

和截图:

类似功能区的 2-tabs 界面

即使当前未打开操作的父选项卡,如何使用快捷方式访问操作?

0 投票
0 回答
894 浏览

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

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

关联

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

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

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

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

0 投票
1 回答
1340 浏览

qt - QMainWindow 中的 QToolbar - 关于其位置变化的信号工具栏

我希望能够检测到作为主窗口一部分的工具栏的位置和方向的任何变化。工具栏有一个QPushButton名为nodes_button并且是主窗口的一部分。我同时使用默认值QMainWindowQToolBar. nodes_button包含一个QMenu,整个练习的目的是将nodes_button的菜单指示器放置在视觉上适合工具栏的方式。

默认主窗口中的默认工具栏有 5 个可以放置的位置 - 顶部、底部、左侧、右侧和浮动。根据工具栏所在的区域,它还会将其方向更改为水平(浮动、顶部和底部)或垂直(左侧或右侧)。

确定方向并不困难,因为工具栏实际上提供了QToolBar::orientation()(用于检索方向)和QToolBar::orientationChanged(Qt::Orientation)(每次工具栏的方向改变时发出的信号)。使用信号我可以像这样连接一个插槽:

当前toolbarAdjust()仅在工具栏的方向更改时触发,但是我也想在工具栏的位置更改时使用它:

由于许多原因,这并不总是有效,例如因为对于左右/顶部和底部工具栏区域,工具栏的方向是相同的 - 垂直/水平。

所以我需要类似的东西

使用工具栏的方向和位置,我可以以适合工具栏当前位置的方式放置菜单指示器。正如您在下面看到的方向与样式表的相应变体组合

导致

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我实际上可以省略整个方向部分并执行以下操作:

因为当您停靠/浮动它时工具栏的行为方式。

编辑: 我发现这个帖子,用户告诉 OPQDockWidget::dockLocationChanged()并且可能也添加了这样的功能QToolBar。最后,OP 会发布一封电子邮件,显示已请求此类功能。帖子是2007年的...