把你的GUI写成XML文件

把你的GUI写成XML文件
 
我从我们实验室参与的一个项目(最终没有接这个项目)中得到一个想法。我们可以存储一个GUI的所有信息在一些XML文件中,这些信息包括布局外观及其背后的逻辑。然后我们可以从这些XML文件恢复这个GUI,并使之具有相同的外观和行为。
像在我以前的 一篇文章里面说的,在VC++的环境下,因为自定义的控件的广泛使用,还有缺少对元数据协议的实现(在JAVA中是发射机制),我们不能做到那样。但是JAVA虚拟机上我们可以通过JAVA的发射机制获得几乎每个控件的所有属性。因此我们有可能复制一个给定的用JAVA写的控件。
然而,技术只是技术,如果不实用的话那就一点用都没有。现在我就是不知道这种技术能用在哪里。我知道在微软的下一代操作系统Longhorn中有一个新的图形架构 Avalon,它让写GUI就像写HTML文件一样,还有,我要提的是Avalon用XML文件作为GUI的中间表示。这个和我的想法很相似。但是微软为这些XML文件的使用建立一个环境,某种解析器或者引擎。然而,虽然我认为我的想法是一个好想法,并且我潜意识里感觉它会很有用,但是在一个一般的,不是大到一个操作系统的系统中,我不能想出这种技术可以做什么用。
因此我不得不进一步考虑这个想法。另外,如果谁有好的想法,知道怎么用这个技术,请在文章后面留言,我将非常感谢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这段代码对应的 CMakeLists.txt 代码如下: ``` cmake_minimum_required(VERSION 3.5) project(myproject) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt5 COMPONENTS Core Gui Quick REQUIRED) if(Qt5_VERSION VERSION_GREATER "5") find_package(Qt5 COMPONENTS Widgets REQUIRED) endif() add_executable(myapp main.cpp main.qml resources.qrc) target_link_libraries(myapp Qt5::Core Qt5::Gui Qt5::Quick) if(Qt5_VERSION VERSION_GREATER "5") target_link_libraries(myapp Qt5::Widgets) endif() install(TARGETS myapp DESTINATION bin) set(CPACK_PACKAGE_NAME "myapp") set(CPACK_PACKAGE_VENDOR "My Company") set(CPACK_PACKAGE_VERSION "1.0") include(CPack) ``` 其中,`cmake_minimum_required()` 指定了 CMake 最低版本要求,`project()` 指定了项目名称。 `set(CMAKE_AUTOMOC ON)`、`set(CMAKE_AUTORCC ON)`、`set(CMAKE_AUTOUIC ON)` 分别开启了自动生成 MOC、RCC 和 UI 文件的选项。 `set(CMAKE_CXX_STANDARD 17)` 和 `set(CMAKE_CXX_STANDARD_REQUIRED ON)` 指定了 C++ 标准和要求使用该标准。 `find_package(Qt5 COMPONENTS Core Gui Quick REQUIRED)` 和 `find_package(Qt5 COMPONENTS Widgets REQUIRED)` 分别查找 Qt5 的 Core、Gui、Quick 和 Widgets 组件,并要求这些组件必须存在。 `add_executable(myapp main.cpp main.qml resources.qrc)` 添加了可执行文件 myapp 的源文件和资源文件。 `target_link_libraries()` 分别链接 Qt5 的 Core、Gui、Quick 和 Widgets 组件。 `install()` 指定了安装目标,将可执行文件安装到 bin 目录下。 `set(CPACK_PACKAGE_NAME "myapp")`、`set(CPACK_PACKAGE_VENDOR "My Company")` 和 `set(CPACK_PACKAGE_VERSION "1.0")` 指定了打包相关的信息。 最后,`include(CPack)` 包含了 CPack 模块,用于打包和分发软件。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值