Qt:QDockWidget 停靠时的选项卡图标

def*_*def 2 icons qt tabbar qdockwidget

Qt 的 QMainWindow 能够停靠从 QDockWidget 派生的窗口。如果它们中的几个堆叠在一起,它也会将一个放在另一个上面,从而产生一个标签栏。每当 QDockWidget 的状态改变时,都会发出一个信号 topLevelChanged()。在这一点上,我想访问底层 QTabWidget 来为新添加的选项卡设置图标。我该怎么做?我的耐心已经结束,试图从 Qt 的文档和源代码中挖掘答案。先感谢您。

在此处输入图片说明

所以图标我想在目录/索引选项卡上。

ekh*_*oro 5

一旦至少一个dockwidget 被标签化,主窗口将创建一个QTabBar来提供dock-tabs。每个停靠区都可以有自己的标签栏。这些标签栏将成为主窗口的子项,因此您可以使用findChildren()children()来获取对它们的引用。

主要的困难在于找到哪个停靠小部件属于哪个选项卡以及哪个选项卡栏。如果停靠小部件窗口标题都是唯一的,您可以使用tabText() 进行搜索。否则,您可能可以使用tabData(),Qt 在内部将其设置为quintptr来自停靠窗口小部件的 a。

一旦你有了正确的选项卡,你当然可以使用setTabIcon()添加你的图标。但请注意,每次停靠小部件取消标签化或移动到另一个标签栏时,图标都会丢失。