【发布时间】:2011-05-30 21:22:03
【问题描述】:
我对 QTabBar/QTabWidget 有疑问。这是我的程序现在的样子,使用 QTabBar:
如你所见,QTabBar 和它下面的 QScrollArea 之间有一条难看的线。这条线是 QScrollArea 框架的一部分,我不能简单地去掉它,因为其他三个边都需要它。我意识到我可以使用 QTabWidget,但是我必须为每个选项卡创建一个小部件,这在此处是不可行的:QScrollArea 的内容根据所选选项卡而变化,但只有一个 QScrollArea 小部件。 (每次创建新标签时都复制它会导致它自己的问题。)
那么有没有人知道一种方法:
(i) 告诉 QScrollArea 绘制一个没有顶线的框架;或
(ii) 对 QTabWidget 中的每个选项卡使用相同的小部件?
更新 3 有关另一种方法,请参阅下面的答案。
Update 1我已经实现了zvezdi的建议,难看的线消失了:
这是一个改进。但这是不对的。查看滚动条和边框之间的间隙。右边是两个像素而不是一个;在底部,它是 三个 像素。 QScrollArea 边框和 mainWidget 边框之间的右侧间隙太大了一个像素。这是由于 QTabWidget 的边框样式,我正在失去理智试图改变它。如果我说:
MyTabWidget -> setStyleSheet ("QTabWidget::pane { margin: 0px,0px,0px,0px }") ;
然后边距似乎是正确的,但边框消失了:
如果我说:
MyTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
"}") ;
然后我几乎回到了我开始的地方:
如果我尝试通过以下方式解决此问题:
ApplicationTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
" border-top: 0px;"
"}") ;
然后我又因为痛苦而被嘲笑:
更新 2 如果我忘记了 setStyleSheet 而只是打开 documentMode,这就是我得到的:
请有人告诉我我很愚蠢,并且有一个非常简单的解决方案。
【问题讨论】: