我想在Qt UI Designer中创建窗口,窗口的一部分可以通过某些条件替换。 所以我希望通过Qt UI Design设计窗口的所有部分,并在运行时在设计的应用程序之间动态切换。 例如,窗口的一部分可以是带有小部件的矩形面板。 什么是最恰当的方式?
答案 0 :(得分:1)
您可以使用布局:
红色边框线是QHBoxLayout。
在Qt Designer中将ui元素从左侧面板拖放到需要的布局(我将布局重命名为mainLt)。然后,您将能够编写以下代码:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::keyPressEvent(QKeyEvent *)
{
ui->mainLt->removeWidget(ui->label);
ui->label->hide();
ui->mainLt->insertWidget(0, new QSpinBox());
}
此代码用QSpinBox替换左边的QLabel。因此,当您显示窗口时,它看起来像:
然后按任意键......
瞧!
这个小例子很漂亮:两个旋转框出现,因为我使用Alt + PrintScreen截取屏幕截图,这意味着我按下了两个按钮而pressEvent已经调用了两次:)但我认为你得到了它。 绘制小部件并根据您的设计将它们添加到布局中。在您的条件成立后,删除一些小部件并插入其他小部件。
答案 1 :(得分:1)
您可以使用的一种方法是在您的用户界面中放置QScrollArea
小部件,并使用QScrollArea::setWidget
功能设置内部小部件。
这种方法有两个好处。首先,QScrollArea
提供了一个用于获取和设置内部窗口小部件的简单API。第二,QScrollArea
将能够处理任何大小的小部件,并且如果内部小部件超出滚动区域的大小限制,则将显示滚动条。
有关详细信息,您可以查看QScrollArea class的Qt文档。