使用Ultimate++快速开发跨平台GUI应用

在软件开发领域,跨平台工具包因其易用性和可移植性而广受欢迎。本教程的目的是展示使用Ultimate++工具包创建应用程序的简便性。将制作一个简单的购物清单应用。

什么是Ultimate++?

Ultimate++是一个用于快速开发图形用户界面(GUI)程序的跨平台图形小部件工具包。它包括一组C++(和U++)库(在Ultimate++中称为包):

  • 核心(Core):所有其他Ultimate++库的基础。
  • CtrlCore:控件(或称为小部件)的基础。
  • CtrlLib:实际的控件(或小部件)。

其他库包括:

  • 一个名为TheIDE的集成开发环境(IDE)。

Ultimate++专注于程序员,尽可能简化GUI应用程序的创建过程。

为什么选择Ultimate++?

它简单、成熟且功能强大。

它是免费且开源的软件,主要在BSD许可下发布。

它正在积极开发中。网站上的论坛可以快速回答问题。

它在Windows、Linux和FreeBSD上运行(并创建在这些平台上运行的应用程序)。计划支持WinCE和MacOS。

代码从一个平台移植到另一个平台。

许多高级功能内置(如SQL、XML等)。

安装Ultimate++

安装非常简单:

  1. 从SourceForge下载最新版本的工具包(例如,带有MinGW的Ultimate++ 605)。
  2. 双击刚刚下载的文件开始安装。保留安装路径C:\upp并点击安装。
  3. 阅读并接受许可协议,然后阅读有关编译器的信息。对于本教程,将仅使用包含的MinGW。
  4. 选择应用程序目录。保留C:\MyApps即可。
  5. 默认设置应该足够了。点击确定。

就是这样!是不是很简单?

创建新项目

当启动TheIDE时,会出现“选择主包”对话框。程序集将项目分组在一起 - 在完成本教程后,应该浏览所有提供的例子和参考应用程序。它们包含了大量信息。需要选择MyApps程序集并点击“新建包”按钮。

为应用程序选择一个名字。将使用SimpleDemo。然后选择模板“带有主窗口的CtrlLib应用程序”。

点击底部的“创建”按钮。TheIDE的主界面现在将打开。屏幕左上角有两个重要部分:

  • 这些是需要编译程序的Ultimate++包。
  • 这些是包的文件。现在存在的那些是自动创建的。

让看看为自动创建的代码:

// SimpleDemo.h #ifndef _SimpleDemo_SimpleDemo_h #define _SimpleDemo_SimpleDemo_h #include #define LAYOUTFILE #include class SimpleDemo : public WithSimpleDemoLayout { public: typedef SimpleDemo CLASSNAME; SimpleDemo(); }; #endif // main.cpp #include "SimpleDemo.h" SimpleDemo::SimpleDemo() { CtrlLayout(*this, "Window title"); } GUI_APP_MAIN { SimpleDemo().Run(); }

这是一个布局文件 - 它允许以可视化的方式将小部件放入程序中。点击文件名将在右侧打开布局设计器。

尝试它

信不信由,已经有了一个可以工作的应用程序!它现在还不做什么,但请注意Ultimate++已经为处理了所有繁琐的Windows API问题。想试试吗?只需按Ctrl-F5。(也可以点击“调试”菜单并选择“执行”)。这将构建应用程序(带有调试信息)并运行它。

有一个带有默认标题的普通窗口。需要改变它。还有一个角落的关闭按钮 - 可能想要添加最小化和最大化按钮。注意窗口不可调整大小。

注意:第一次构建总是最慢的。Ultimate++库必须在第一次运行时编译,但它会为后续运行缓存。TheIDE使用Blitz技术来加速后续运行的编译。(试试吧!做一个小改动 - 比如在main.cpp中添加一个新行。再次按Ctrl-F5,看看它编译得有多快。)用户还报告说使用Microsoft的VisualC++Express编译器速度更快,并且创建的可执行文件更小。

制作应用程序

将制作一个简单的购物清单应用程序。

点击文件SimpleDemo.lay以打开布局设计器。拖动框的角落使布局更大一些。可以在布局内右键单击以添加新的小部件。

添加一个静态文本小部件。将使用它作为应用程序的标题。注意布局区域左侧出现的属性。

为小部件设置一个名称。使用前缀来区分小部件是什么 - 选择了txtTitle。将文本设置为“购物清单”,居中文本,并将字体设置为20pt。创建以下小部件:

  • 标签lblItem,标签为“项目”
  • 编辑字符串strItem
  • 按钮btnAdd,标签为“添加”
  • ArrayCtrl arrList

将小部件排列如下:

再次尝试编译(Ctrl-F5)。程序开始成形了。

让添加一些功能。需要编写一个函数,当按下按钮时将一个项目添加到列表中。在SimpleDemo.h中的类定义中添加以下内容:

void AddItem();

现在需要实现它。转到main.cpp并开始输入:

void SimpleDemo::AddItem() { // The ~ operator calls the object's GetData() function arrList.Add(~strItem); strItem <<= Null; // Manually clear the item }

让给列表添加一个列标题,并将按钮连接到新函数。将此添加到SimpleDemo::SimpleDemo():

arrList.AddColumn("Item"); // Add a column titled "Item" arrList.Removing(); // Gives us a right-click menu to delete rows btnAdd <<= THISBACK(AddItem); // Uses a callback to link the button to the function

再次编译(Ctrl-F5)以查看结果。

现在,应用程序已经完成了需要它做的所有事情 - 简单地跟踪购物清单的项目。但是,为了展示Ultimate++中某些事情的简便性,让再进一步。

通过修改SimpleDemo::SimpleDemo()中的第一行来更改窗口标题:

CtrlLayout(*this, "Shopping List");

在上一行之后立即添加以下行:

Sizeable().Zoomable();

这会在标题栏上添加最小化和最大化按钮,并且还允许调整窗口大小。

最终代码

// SimpleDemo.h #ifndef _SimpleDemo_SimpleDemo_h #define _SimpleDemo_SimpleDemo_h #include #define LAYOUTFILE #include class SimpleDemo : public WithSimpleDemoLayout { void AddItem(); public: typedef SimpleDemo CLASSNAME; SimpleDemo(); }; #endif // main.cpp #include "SimpleDemo.h" SimpleDemo::SimpleDemo() { CtrlLayout(*this, "Shopping List"); Sizeable().Zoomable(); arrList.AddColumn("Item"); // Add a column titled "Item" arrList.Removing(); // Gives us a right-click menu to delete rows btnAdd <<= THISBACK(AddItem); // Uses a callback to link the button to the function } void SimpleDemo::AddItem() { // The ~ operator calls the object's GetData() function arrList.Add(~strItem); strItem <<= Null; // Manually clear the item } GUI_APP_MAIN { SimpleDemo().Run(); }

这是应用程序在运行:

就是这样!一个非常简单的应用程序,仅用几分钟就制作完成了,这要归功于Ultimate++的强大和简单性。请注意,然后可以将这段代码带到Linux并为X11编译它。它就是可以工作。Ultimate++的一个优势是它是自包含的。不需要找到一个单独的IDE,一个单独的布局设计器,或一个单独的编译器。它们都是内置的(或捆绑的)。敦促查看已经安装的示例应用程序,看看Ultimate++有多容易学习。

有用的链接

  • Ultimate++主页
  • Ultimate++论坛
  • 在线文档
  • 许可
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485