我是Qt的新手,但对C++有很好的把握.我刚刚学习了qt design(QT5)来生成GUI和.ui文件,并在VS 2012中进行编码.
现在有一个古老的项目,纯手工编写,没有qt设计.为了维护它,代码仍然需要手工编写.
是否有任何qt工具可以对代码进行反向工程以生成qt设计可以工作的东西?那么任何未来的GUI修改都可以在qt设计中使用?
非常感谢
准备充分的项目将从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,在这种情况下,它将更难做到这一点.在这种情况下,你将不得不手工完成所有事情.