在软件开发领域,跨平台工具包因其易用性和可移植性而广受欢迎。本教程的目的是展示使用Ultimate++工具包创建应用程序的简便性。将制作一个简单的购物清单应用。
Ultimate++是一个用于快速开发图形用户界面(GUI)程序的跨平台图形小部件工具包。它包括一组C++(和U++)库(在Ultimate++中称为包):
其他库包括:
Ultimate++专注于程序员,尽可能简化GUI应用程序的创建过程。
它简单、成熟且功能强大。
它是免费且开源的软件,主要在BSD许可下发布。
它正在积极开发中。网站上的论坛可以快速回答问题。
它在Windows、Linux和FreeBSD上运行(并创建在这些平台上运行的应用程序)。计划支持WinCE和MacOS。
代码从一个平台移植到另一个平台。
许多高级功能内置(如SQL、XML等)。
安装非常简单:
就是这样!是不是很简单?
当启动TheIDE时,会出现“选择主包”对话框。程序集将项目分组在一起 - 在完成本教程后,应该浏览所有提供的例子和参考应用程序。它们包含了大量信息。需要选择MyApps程序集并点击“新建包”按钮。
为应用程序选择一个名字。将使用SimpleDemo。然后选择模板“带有主窗口的CtrlLib应用程序”。
点击底部的“创建”按钮。TheIDE的主界面现在将打开。屏幕左上角有两个重要部分:
让看看为自动创建的代码:
// 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。创建以下小部件:
将小部件排列如下:
再次尝试编译(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++有多容易学习。