是否可以在单独的 ui 文件中指定 Stacked Widget 的每一页

问题描述

我在 Qt Creator v4.14.2 中使用 Stacked Widget。现在每个页面的所有项目都位于 mainwindow.ui 文件中。我没有页面之间的切换问题。

出于清晰和文件大小的原因,我想将每个 Stacked Widget 页面的项目放在单独的 ui 文件中。我了解这种需要在技术上没有原因。我已经使用 MVVM 开发了 UI,并希望尽可能在 Qt(使用 Qt Creator)中复制该方法。

对于我正在进行的这个项目,我不希望在 C++ 代码中创建页面和/或小部件。

解决方法

您可以使用 QUiLoader 加载任意数量的 UI 文件。假设文件被命名为 page-1.ui,... page-10.ui 你可能有类似(未经测试)...

#include <QStackedWidget>
#include <QUiLoader>
#include <QWidget>

   .
   .
   .

QStackedWidget stack;
QUiLoader loader;
for (int page_no = 1; page_no <= 10; ++page_no) {
  QFile f(QString("page-%1.ui").arg(page_no));
  if (f.open(QFile::ReadOnly)) {
    auto *w = loader.load(&f);
    stack.addWidget(w);
  } else {
    qWarning() << "failed to load UI file.";
  }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...