隐藏Qt选项卡的标签文本而不将文本设置为空字符串

时间:2014-07-20 15:26:12

标签: c++ qt qtabwidget qdockwidget qtwidgets

我需要QTabWidget只带图标:

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

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

  1. 字体大小为0?
  2. 我需要创建自己的bar类并将paint事件覆盖为here
  3. 更容易/更清洁?

    ---编辑---

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

    Still some space consumed

    我目前正在尝试的是“文字空”和Prasad Silva的方法。我尝试识别选项卡中的文本标签并将其大小设置为0,然后重置它。它略有不同,但会使文本保持完整。

    顺便说一下,我在标签上看到一条线,知道这是什么(它来自哪里)? 编辑:似乎没有“简单方法”(样式表,属性),请参阅Hiding bottom line in QTabBar

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

3 个答案:

答案 0 :(得分:3)

这不容易做到。使用空白文本。

答案 1 :(得分:3)

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

对于Qt拒绝公开对接系统的公共API这一事实来说,这真是一个大问题。由于这些限制,我们已经转向自定义对接实现。

答案 2 :(得分:1)

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

我认为API不存在这种不常见的情况,这意味着你需要自己做。

现在,您可以声称对许多小部件执行操作非常繁琐,但另一方面,您可以编写一个简单的散列定义或内联函数来为您执行此重复性工作,这只会产生一个单行程序基本上,在改变状态时你需要使用它。