5

我只需要一个QTabWidget带有图标的:

如何在 Qt 中隐藏选项卡的标签文本?我无法将文本设置为空字符串 ( ""),因为我正在使用停靠的小部件 ( QDockWidget),并且标签文本是自动设置的(如果小部件是浮动的,我需要它)。

但在选项卡模式下,我只想显示(选项卡的)图标。可能的方法:

  1. 字体大小为0?
  2. 我需要创建自己的栏类并覆盖此处的绘制事件

有什么更简单/更清洁的吗?

- - 编辑 - -

好的,“将窗口标题设置为空字符串,并将其重置为原始文本”方法有效。我正在topLevelChanged为此使用信号。但是,它有一些缺点,因为空文本仍然占用一些空间。另一个问题,文本工具提示消失了,我无法将其设置回来。

仍然占用了一些空间

我目前正在尝试的是介于“文本空”和普拉萨德席尔瓦的方法之间的东西。我尝试识别选项卡内的文本标签并将其大小设置为 0,然后将其重置。它略有不同,但会保持文本完整。

顺便说一句,我在标签顶部看到一条线,知道这是什么(它来自哪里)吗?编辑:似乎没有“简单的方法”(样式表,属性),请参阅隐藏 QTabBar 中的底线

也许我会自己创建整个标签栏,因为自动生成的东西太难处理了(同意 PS 的观点)。

4

3 回答 3

3

我解决类似问题的方法是创建一个 QDockWidget 子类,将 QWidget 子类安装为标题栏(通过 setTitleBarWidget)。当停靠小部件触发 topLevelChanged、dockLocationChanged 和 visiblityChanged 时,这让我可以控制在标题栏中显示/隐藏文本。

这确实是一个很大的技巧,可以绕过 Qt 拒绝为对接系统公开公共 API 的事实。由于这些限制,我们已经转向自定义对接实现。

于 2014-07-22T14:18:58.913 回答
3

这不能轻易做到。使用空文本。

于 2014-07-20T19:54:03.510 回答
1

如果不想看到文本,可以在保存当前文本后将其设置为空文本,当您想再次查看时,从存储的变量中恢复。

对于这种不太常见的情况,我认为 API 中没有任何内容,这意味着您需要自己做。

现在,您可以声称为许多小部件执行此操作很乏味,但另一方面,您可以编写一个简单的散列定义或内联函数来为您完成这项重复性工作,这基本上只会导致单行调用,在更改状态时无论如何都需要使用它。

于 2014-07-21T13:11:48.947 回答