gpt4 book ai didi

c++ - QTabBar 下的小部件带有不需要的框架

转载 作者:可可西里 更新时间:2023-11-01 18:38:05 26 4
gpt4 key购买 nike

我对 QTabBar/QTabWidget 有疑问。这是我的程序目前的样子,使用 QTabBar:

enter image description here

如您所见,QTabBar 和它下面的 QScrollArea 之间有一条难看的线。这条线是 QScrollArea 框架的一部分,我不能简单地去掉它,因为它在其他三个边上是必需的。我意识到我可以使用 QTabWidget,但是我必须为每个选项卡创建一个小部件,这在这里是不可行的:QScrollArea 的内容根据所选选项卡而变化,但只有一个 QScrollArea 小部件。 (每次创建新选项卡时都复制它会导致其自身的问题。)

那么有没有人知道一种方法:
(i) 告诉 QScrollArea 画一个没有顶线的框架;或者
(ii) 对 QTabWidget 中的每个选项卡使用相同的小部件?

更新 3 对于另一种方法,请参阅下面我的回答。

更新 1 我已经实现了 zvezdi 的建议,难看的线条消失了:

enter image description here

这是一个改进。但这是不对的。查看滚动条和边框之间的间隙。在右侧,它是两个像素而不是一个;在底部,它是三个 像素。 QScrollArea 边框和 mainWidget 边框之间右侧的间隙太大了一个像素。这是由于 QTabWidget 的边框样式,我正在失去理智试图改变。如果我说:

MyTabWidget -> setStyleSheet ("QTabWidget::pane { margin: 0px,0px,0px,0px }") ;

然后边距似乎是正确的,但边框消失了:

enter image description here

如果我说:

MyTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
"}") ;

然后我几乎回到了我开始的地方:

enter image description here

如果我尝试通过以下方式补救:

ApplicationTabWidget -> setStyleSheet ("QTabWidget::pane { "
" margin: 0px,0px,0px,0px;"
" border: 1px solid darkgray;"
" border-top: 0px;"
"}") ;

然后我又一次因为我的痛苦而被 mock :

enter image description here

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

enter image description here

求求你,告诉我我是不是很蠢,有一个非常简单的解决方案可以解决所有这些问题。

最佳答案

你说“QScrollArea 的内容根据所选选项卡发生变化”好吧,如果我假设这不是真的,你的意思是滚动区域内的小部件的内容发生变化,那么你可以试试这个:

在您的 QTabWidget 中创建与您需要的选项卡一样多的 QScrollArea 对象,但只有一个,例如 QTextEdit,您将在每个滚动区域中显示它,并且哪些内容将在选项卡更改时更改(从旧选项卡的 takeWidget() QScrollArea & setWidget() on the new tab's QScrollArea)

我不知道您是如何设计代码的,但是为了尝试我的建议,您的代码应该围绕 QScrollArea 内的小部件而不是 QScrollArea 本身进行设计。

关于c++ - QTabBar 下的小部件带有不需要的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com