- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究配置 QDialog。它有几个类别(General、Appearance 等),当用户点击它们时会加载它们。每个类别都有自己的页面。这些页面本身就是独立的类(每个都有自己的 ui、cpp 和 h)。当 Preferences 窗口加载时,页面被实例化并加载到 QStackedWidget 中。然后将 Stackedwidget 放入 QScrollArea 中,以便在必要时可以滚动。
但是,有一个问题。自从我添加了 QStackedWidget,QScrollArea 总是有一个垂直滚动条,即使当前页面足够短不需要一个:(图片显示最短页面)
ScrollArea 垂直滚动策略设置为 Qt::ScrollBarAsNeeded,因此在逻辑上它应该只在页面大于可视区域时显示一个栏。
这是我已经尝试解决的问题:
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();
}
最佳答案
QStackedWidget
获取添加到其中的最大小部件的大小。就您而言,首选项对话框中最大的页面会影响 QStackedWidget
的大小。并因此强制滚动区域显示其滚动条,即使它似乎没有必要。
为了解决这个问题,您可以创建一个插槽,在您更改 QStackedWidget
中的当前小部件之前触发该插槽。将您要离开的页面的大小策略设置为 QSizePolicy::Ignored
以及您将要向该页面显示的任何内容的页面大小策略 -- QSizePolicy::Expanding
例如。在 this page 上详细介绍了此技术的示例。 .示例中有很多代码,但重要的部分在这里:
void changeCurrent(int idx)
{
if (stackWidget->currentWidget() !=0) {
stackWidget->currentWidget()->setSizePolicy(QSizePolicy::Ignored,
QSizePolicy::Ignored);
}
stackWidget->setCurrentIndex(idx);
stackWidget->currentWidget()->setSizePolicy(QSizePolicy::Expanding,
QSizePolicy::Expanding);
adjustSize();
}
QStackedWidget
上的当前索引.它会导致刚刚被查看的页面具有对
QStackedWidget
的整体大小没有影响的大小策略。以及即将被查看的页面具有影响大小的策略。
关于qt - 摆脱 QScrollArea 中不必要的滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557670/
jQuery attributeContainsPrefix [name^="value"] 对比 attributeStartsWith [name|="value"] 实际区别是什么? 最佳答案
在1.1部分在RFC 6749中,有四种角色:资源拥有者、资源服务器、客户端和授权服务器。 如果客户端和资源所有者是同一实体,OAuth 是否变得多余或不必要? 例如,我有一个封闭的 API 和一个面
我有一段代码,其中有一个带有保护子句的 raise 语句: def validate_index index # Change to SizeError raise ArgumentError
我看到了这篇文章( JPA Entity Lifecycle Events vs database trigger ),但它并没有像我在这里那样明确地询问: 当我插入 PK 值为 (null) 的行时
所以,我有一段代码看起来像 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){ // Do something }
我是一名优秀的程序员,十分优秀!