Qt GUI -> 基于代码到基于设计器

Qt GUI -> Code based to Designer based

我目前正在处理一些旧代码[在某种程度上是遗留的]。 最近,我们收到了更改显示大小的请求ui。 此时,我意识到 ui 是由代码生成的。至少可以说,这使得对代码的更改非常烦人 [我们不仅希望扩展 ui 组件,而且还希望将一些功能从菜单栏移​​到屏幕上]。

因此对于请求uirement 和未来可能的更改,我更愿意将代码变形为基于设计器的 ui 使将来的代码更改更容易 [而且我真的真的不想要深入研究现有的复杂代码,我也不希望下一个人像我诅咒我的前任一样诅咒我]。

我想知道是否有人遇到过类似的问题并设计了一些步骤来解决同样的问题。我在网上查了下,没有找到合适的guides/recommendations,所以我带着假想的曲奇来了

好吧,老实说,唯一的方法是 "redraw" 他们,但是,我建议的是中间的东西(这是我多年来使用的东西)-因为我不喜欢 UI编译器,

1) 在 .ui 文件中绘制界面 2) 使用 ui 工具(来自文档)

加载 QWidget *
MyWidget::MyWidget(QWidget *parent)
  : QWidget(parent)
 {
  QUiLoader loader;
  QFile file(":/forms/myform.ui");
  file.open(QFile::ReadOnly);
  QWidget *myWidget = loader.load(&file, this);

  QPushButton * pBtn = myWidget->findChild<QPushButton*>("myButton");

  file.close();

  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(myWidget);
  setLayout(layout);
}

这样你就可以非常安全地将所有 UI 移动到设计器中,同时保持你的代码与已经声明的控件或多或少保持完整,只是你需要某种 resolveControls() 函数来查找和附加需要控制。