Qt的QMainWindow能够停靠从QDockWidget派生的窗口。如果它们很少堆叠在一起,它也会将一个放在另一个上面,产生一个标签栏。每当QDockWidget的状态改变一个信号topLevelChanged()被激活。此时,我想访问底层的QTabWidget,为新添加的选项卡设置一个图标。我该怎么做?我的耐心是试图从Qt的文档和源代码中挖掘出答案。提前谢谢。
所以我希望在内容/索引标签上找到图标。
答案 0 :(得分:3)
一旦至少有一个dockwidget被选中,主窗口将创建一个QTabBar
来提供dock-tabs。每个码头区域都有自己的标签栏。这些标签栏将成为主窗口的子项,因此您可以使用findChildren()或children()来获取对它们的引用。
主要的困难在于找到哪个dock-widget属于哪个选项卡以及哪个tab-bar。如果dock-widget window-titles都是唯一的,您只需使用tabText()进行搜索即可。否则,您可以使用tabData(),Qt在内部设置来自dock-widget的quintptr
。
获得正确的标签后,您当然可以使用setTabIcon()添加图标。但请注意,每次Dock-widget未经修改或移动到另一个标签栏时,该图标都将丢失。