Qt从旧的c ++项目生成.ui文件?

use*_*880 4 c++ qt

我是Qt的新手,但对C++有很好的把握.我刚刚学习了qt design(QT5)来生成GUI和.ui文件,并在VS 2012中进行编码.

现在有一个古老的项目,纯手工编写,没有qt设计.为了维护它,代码仍然需要手工编写.

是否有任何qt工具可以对代码进行反向工程以生成qt设计可以工作的东西?那么任何未来的GUI修改都可以在qt设计中使用?

非常感谢

dte*_*ech 5

准备充分的项目将从UI层中隔离应用程序逻辑,从而更容易对后者进行更改或完全替换后者.如果要转换的项目是这样的,那么它应该在某种程度上可行.

如果您保持相同的命名,那么当您访问UI成员时,命令式UI和.ui生成的UI 之间的最显着差异将是额外的ui->.

没有工具可以为您完成所有工作,但您可以使用QObject::dumpObjectTree()获取UI的树状表示,如下所示:

QTabDialog::dialog <574,451,133,123>
      QBoxLayout::unnamed
        QBoxLayout::unnamed
        QBoxLayout::unnamed
      QPushButton::ok <45,91,82,26>
      QTabWidget::tab widget <6,6,119,75>
        QTabBar::tab control <0,0,48,24>
          QToolButton::qt_right_btn I
          QToolButton::qt_left_btn I
          QAccel::tab accelerators
        QWidget::tab base I
        QWidgetStack::tab pages <0,22,119,51>
          QFrame::first <2,2,115,47>
          QObject::unnamed
          QWidgetStackPrivate::Invisible::unnamed <2,2,115,47>
Run Code Online (Sandbox Code Playgroud)

如您所见,您可以轻松地解析它并获取当前UI中每个对象的类型和名称,您可以使用该信息以及元系统提供的功能来查询属性并生成XML .ui文件.

当然,您可以拥有一个动态创建或删除元素的动态UI,在这种情况下,它将更难做到这一点.在这种情况下,你将不得不手工完成所有事情.