我有QTabBar/QTabWidget的问题.这是我的程序目前使用QTabBar的样子:

如您所见,QTabBar与其下方的QScrollArea之间存在难看的线.这条线是QScrollArea框架的一部分,我不能简单地将其删除,因为在其他三个方面都需要它.我意识到我可以使用QTabWidget,但是我必须为每个选项卡创建一个小部件,这在这里是不可行的:QScrollArea的内容根据所选的选项卡而改变,但是只有一个QScrollArea小部件.(每次创建新选项卡时复制它都会导致问题.)
所以有人知道一种方法:
(i)告诉QScrollArea绘制没有顶线的框架; 或
(ii)为QTabWidget中的每个标签使用相同的小部件?
更新3对于另一种方法,请参阅下面的答案.
更新1我已经实现了zvezdi的建议,并且难看的线已经消失:

这是一种改进.但这不对.查看滚动条和边框之间的间隙.在右边,它是两个像素而不是一个; 在底部,它是三个像素.QScrollArea边框和mainWidget边框之间的右边间隙是一个像素太大.这是由于QTabWidget的边框风格,我正在试图改变我的理智.如果我说:
MyTabWidget -> setStyleSheet ("QTabWidget::pane { margin: 0px,0px,0px,0px }") ;
Run Code Online (Sandbox Code Playgroud)
边缘似乎是正确的,但边界消失了:

如果我说:
MyTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
"}") ;
Run Code Online (Sandbox Code Playgroud)
然后我几乎回到了我开始的地方:

如果我尝试用以下方法解决这个问题:
ApplicationTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
" border-top: 0px;"
"}") ;
Run Code Online (Sandbox Code Playgroud)
然后我再次为自己的痛苦而嘲笑:

更新2如果我忘记setStyleSheet并打开documentMode,这就是我得到的:

请有人,告诉我,我是愚蠢的,这是一个非常简单的解决方案.
您说“QScrollArea 的内容根据选定的选项卡而变化”,如果我认为这不是真的,那么您的意思是滚动区域内的小部件的内容发生变化,那么您可以尝试以下操作:
在 QTabWidget 中创建与您需要的选项卡一样多的 QScrollArea 对象,但只有一个,例如 QTextEdit,您将在每个滚动区域中显示它,以及哪些内容将在选项卡更改时更改(来自旧选项卡的 QScrollArea 和 setWidget 的 takeWidget()) () 在新选项卡的 QScrollArea 上)
我不知道你是如何设计你的代码的,但是要尝试我的建议,你的代码应该围绕 QScrollArea 内的小部件设计,而不是 QScrollArea 本身。