用 wxWidget 构建跨平台的 GUI

本文介绍了如何使用wxWidgets工具包创建跨平台的GUI应用,重点在于如何开始使用wxWidgets,包括链接库、定义应用程序类和框架类,以及处理事件。文章通过一个简单的示例展示了如何在C++中构建一个包含按钮的窗口,并提到了wxWidgets的Python绑定wxPython,强调了其在简化编程和增强功能方面的优势。
摘要由CSDN通过智能技术生成
导读:

2006 年 10 月 26 日


wxWidgets 工具包提供图形用户界面(GUI)开发所需的一些功能强大的跨平台工具。除了原生的 C++, 还有其他几种语言提供了使用该工具包所需的包装程序。本文将介绍如何使用 wxWidgets 工具包来在所选用的编程语言中创建用途广泛的 GUI。

为什么要使用 wxWidgets 呢?原因很简单,它让您可以快速轻松地编写能够跨平台运行的 GUI,能让您随意选用编程语言,还能让您的 GUI 如下图所示一样优秀:


图 1. Chandler 电子邮件客户机


图 1 显示了 Chandler,一个在开放源码应用程序基础上开发的日历和电子邮件管理程序。它是使用 wxWidgets 工具包编写的。虽然原始版本的 wxWidgets 是在 C++ 中实现的,Chandler 的创建者们却使用了 wxPython 工具包及 Python 作为包装程序来与 C++ 库进行无缝的交互。wxWidgets 工具包会尽可能地利用原生对象,这些对象通过在需要的地方使用强大的定制窗口小部件得以扩充。您可以编写能够运行在多种平台的 wxWidgets 程序,并且可以使用多种编程语言来实现。


开始使用 wxWidgets


开始之前,我假定您已经到 wxWidgets 主页下载了所用平台的相关软件包。如果还没有,请参见 参考资料 部分的链接并下载它。我还进一步假定您已经掌握了将 wxWidgets 库与编译器或所选的集成开发环境(IDE)进行集成所需的命令和设置。如果还不是很明白,本文后面 参考资料 部分中有指向所需信息的相关链接。完成上述工作后,您就可以着重进行程序代码编写了。


wxWidgets 程序的主体包括两种主要的对象:应用程序对象和框架对象。可以有多个框架,而且在代码中还可能需要一些特定于 wxWidgets 的宏。以下解释了它们是如何组合在一起的。


链接到 wxWidgets 库


要链接到 wxWidgets 库,必须先包括它。在头文件的顶部放上如下一行代码:





#include "wx/wx.h"



wx/wx.h 头文件包括所有可能需要的 wxWidgets 定义。如果十分关注于性能,则可以用一些针对将要用到的特定头文件的 include 语句来替代该文件。


定义应用程序类


接下来,必须定义应用程序类。在很多简单的情况下,该类的作用不大,但是您必须有一个自己的类。wxWidgets 应用程序继承自 wxApp 类,其定义很简单:





class DemoApp : public wxApp {

public:
virtual bool OnInit();
}


应用程序开始时,调用 OnInit() 函数 —— 实际上是 main() 方法。


定义了应用程序类之后,在代码中放上如下的宏:





IMPLEMENT_APP(DemoApp)



您可以用自己的应用程序类的名称来替代 DemoApp。这个宏创建 wxWidgets 所使用的真正的 main() 方法。另外,它还创建应用程序对象的一个实例并开始初始化过程。


定义框架类


现在开始定义框架类,它代表应用程序中的主窗口。xWidgets 父类是 wxFrame。清单 1 给出了一个简单的示例。


清单 1. 示例 wxFrame 类




                

class DemoFrame : public wxFrame {
public:
DemoFrame(const wxString& title);
void OnButtonPress(wxCommandEvent& event);

private:
DECLARE_EVENT_TABLE()
};


为了去除不太熟悉的名称,wxString 是一种特定于 wxWidgets 的字符串包装程序类࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值