资讯动态

插件式框架学习(2)

发布时间:2026/10/26 2:02:22 来源:尧图企业网站定制
你是否听过一种思路我会创建一个xxx.ui我的主进程就是可以加载这个xxx.ui并显示我指的就是Qt的.ui文件但是我希望实现一种修改后不需要重新编译运行的效果就是修改后我直接打开程序就可以看到变化不需要重新编译可以Qt 支持这种方式关键是运行时从外部加载.ui文件。流程是用 Qt Designer 修改并保存xxx.ui。主程序启动时用QUiLoader读取这个文件。再次打开程序就能看到修改后的界面无须重新编译。如果你用 C核心代码类似这样QApplication app(argc, argv); QFile file(QCoreApplication::applicationDirPath() /main.ui); if (!file.open(QIODevice::ReadOnly)) return 1; QUiLoader loader; QWidget *window loader.load(file); if (!window) return 1; window-show(); return app.exec();需要区分两种用法方式修改.ui后是否需要重新编译用uic生成代码再编译进程序需要用QUiLoader在运行时加载外部.ui不需要是的你实现一下吧就基于当前ApplicationHost我不想使用QMainWindow window;了新代码:const QString uiPath QDir(QCoreApplication::applicationDirPath()) .filePath(ui/main.ui); QFile file(uiPath); if (!file.open(QIODevice::ReadOnly)) { qCritical().noquote() Cannot open UI: uiPath file.errorString(); return false; } QUiLoader loader; // UI 中的相对图片路径以 UI 所在目录为基准。 loader.setWorkingDirectory(QFileInfo(file).absoluteDir()); window.reset(loader.load(file)); if (!window) { qCritical().noquote() Cannot load UI: uiPath loader.errorString(); return false; }好了这一版实现了可以动态读取ui文件的逻辑Release v1.0.2支持外部 UI 动态加载 · lianpeiliang/LearnFramework

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑