java 不要滚动条,摆脱QScrollArea中不必要的滚动条

我正在开发Configuration QDialog . 它有几个类别(常规,外观等),当用户点击它们时会加载它们 . 每个类别都有自己的页面 . 这些页面本身就是单独的类(每个页面都有自己的ui,cpp和h) . 加载“首选项”窗口时,页面将被实例化并加载到QStackedWidget中 . 然后将Stackedwidget放入QScrollArea中,以便在必要时滚动 .

但是,有一个问题 . 自从我添加了QStackedWidget之后,QScrollArea总是有一个垂直滚动条,即使当前页面足够短也不需要一个:(图片显示最短的页面)

3b92da88-6ba6-47fd-ac25-cfac0a5310dd.png

ScrollArea垂直滚动策略设置为Qt :: ScrollBarAsNeeded,因此逻辑上它应该只显示一个条,如果页面大于可视区域 .

这是我已经尝试解决的问题:

将滚动策略设置为Qt :: ScrollBarAlwaysOff . 虽然这摆脱了滚动条,但它不能接受,因为它不会让用户知道他们需要在长页面上滚动 .

设置QStackedwidget的最小/最大高度 . 如果我将滚动条设置为足够低的值,这会使滚动条消失,但这是不可接受的,因为它会导致某些小部件具有压扁的外观 .

我知道问题与QStackedWidget有关,但由于这是我第一次使用QStackedWidget,我不确定它是什么 . 我也注意到卷轴的数量总是相同的;即,无论页面小部件有多大/多小,可滚动区域总是相同的大小 . 出于某种原因,它比最长的页面略大 . 起初我以为我在每页底部放置的垂直垫片来收紧布局是造成这种情况的,但取出它们并没有解决它 .

更新:这是控制Stackedwidget的代码:

void Newconfig::on_Categories_currentItemChanged(QTreeWidgetItem *current)

{

QModelIndex index=ui->Categories->currentIndex();

int idx=index.row();

QString category=current->text(0);

this->setWindowTitle("Preferences -- " + category);

if (stack->currentWidget() != 0) {

stack->currentWidget()->setSizePolicy(QSizePolicy::Ignored,

QSizePolicy::Ignored);

}

stack->setCurrentIndex(idx);

stack->currentWidget()->setSizePolicy(QSizePolicy::Expanding,

QSizePolicy::Expanding);

adjustSize();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值