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

Qt GUI -> Code based to Designer based

本文关键字:代码 GUI 基于 gt Qt      更新时间:2023-10-16

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

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

我想知道是否有人遇到了类似的问题,并制定了一些相同的步骤。我在网上查了一下,没有找到任何合适的指南/推荐,所以我带着想象中的饼干来到这里。

老实说,唯一的方法是"重新绘制"它们,但是,作为中间的东西,我建议(这是我多年来使用的)-因为我不喜欢UI编译器,

1) 在.ui文件中绘制界面2) 使用uitools(来自文档)加载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()函数来查找和附加所需的控件。