- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑简单的应用
#include <QtWidgets>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QStackedLayout stack;
stack.addWidget(new QLabel("Calls QLabel::show()?"));
return app.exec();
}
用qmake项目
TEMPLATE = app
TARGET = main
QT += widgets
CONFIG += c++11
SOURCES += main.cpp
人们会凭直觉期待一个没有任何 UI 的应用程序,因为 QWidget::show
没有在任何小部件上调用。但是,将显示添加的标签,这导致假设 QStackedLayout::addWidget
显示此小部件,它可能与:
If the
QStackedLayout
is empty before this function is called, the given widget becomes the current widget.
这应该是这样工作的吗?我如何摆脱这种违反直觉的行为?这是我发现的唯一一种以这种方式工作的布局。
最佳答案
Is this supposed to work that way?
我怀疑 QStackedLayout 类的作者从未考虑过有人将顶级小部件放入布局中的可能性。想要做这件事似乎很奇怪。
关于意图:不过,在不与作者交谈的情况下,我们最多只能查看 qstackedlayout.cpp 中的代码。我看到 QStackedLayout::addWidget() 调用 QStackedLayout::insertWidget(),QStackedLayout::insertWidget() 调用 QStackedLayout::setCurrentIndex(),后者调用小部件上的 show();这可以解释为什么您的 QLabel 变得可见。
How do I get rid of this counterintuitive behaviour?
通常在 Qt 程序中,您不会将顶级小部件 addChild() 添加到布局中。相反,您将创建自己的独立顶级小部件,创建与其关联的布局,然后将子小部件添加到布局,如下所示:
QWidget topWidget;
QStackedLayout * stack = new QStackedLayout(&topWidget);
stack->addWidget(new QLabel("Calls QLabel::show()?"));
return app.exec();
关于c++ - QStackedLayout 隐式显示添加的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517517/
考虑简单的应用 #include int main(int argc, char **argv) { QApplication app(argc, argv); QStackedLa
我可以在 Qt Creator 中很好地使用 QStackedWidget,但它有允许用户更改当前页面的按钮。我只想以编程方式执行此操作。不幸的是,在表单编辑器的任何地方似乎都没有堆叠布局。有什么方法
我可以在 Qt Creator 中很好地使用 QStackedWidget,但它有允许用户更改当前页面的按钮。我只想以编程方式执行此操作。不幸的是,在表单编辑器的任何地方似乎都没有堆叠布局。有什么方法
大家好,我是 Qt 编程的新手,我想使用 QStackedLayout 创建一个小部件。我已经使用 Qt Creator 设计了一些小部件,将它们添加到 QStackedLayout 并将其设置为主小
我有一个 QProgressBar,我需要在 QStackedLayout 中居中。鉴于 QStackedLayout::setAlignment 没有任何效果,并且小部件始终位于左上角,我该如何实现
我有一个 QProgressBar,我需要在 QStackedLayout 中居中。鉴于 QStackedLayout::setAlignment 没有任何效果,并且小部件始终位于左上角,我该如何实现
请看下面的代码: QStackedLayout stackLayout(this); QStackedLayout stackLayout = QStackedLayout(this); 我有两个问题
我有一个 QMainWindow,其中 QStackedWidget 作为中央小部件,并且通过更改该中央小部件的当前小部件来在布局之间切换。 这一直工作正常,但现在我试图使这些可能的布局之一可滚动,这
我是一名优秀的程序员,十分优秀!