如何在Linux上安装wxWidgets? (linux wxwidgets 安装)

wxWidgets是一个跨平台的C++应用程序框架,它提供了丰富的GUI工具和一系列的函数库,可以用于开发各种类型的应用程序。wxWidgets已经成为Linux等操作系统中广泛使用的开发工具之一。本文将向您介绍如何在Linux上安装wxWidgets。

一、准备工作

在安装wxWidgets之前,您需要满足以下条件:

1. Linux操作系统。

2. C++编译器或环境。

3.用于构建应用程序的Make命令。

4.用于下载和提取wxWidgets源代码的解压工具,如tar命令。

二、下载wxWidgets源代码

您可以在wxWidgets官方网站上下载wxWidgets。特别是,您需要下载最新的wxWidgets源代码。目前最新版本的wxWidgets为3.1.5。您可以通过访问以下网址下载:

https://www.wxwidgets.org/downloads/

下载完成后,您将得到一个wxWidgets源代码的tarball文件。

三、提取wxWidgets源代码

一旦您已经下载了wxWidgets源代码的tarball文件,那么您需要提取它。您可以使用tar命令来提取:

tar -zxvf wxWidgets-x.x.x.tar.gz

请将“x.x.x”替换为您下载的wxWidgets版本号。例如,如果您下载的是wxWidgets 3.1.5,则命令如下:

tar -zxvf wxWidgets-3.1.5.tar.gz

四、构建和安装wxWidgets

1.进入wxWidgets目录

解压之后,您将在当前目录中得到一个wxWidgets文件夹。需要进入此时目录,用以执行下一步的构建和安装步骤。例如,如果wxWidgets目录的完整路径是~/Downloads/wxWidgets-3.1.5,则您可以按以下方式进入目录:

cd ~/Downloads/wxWidgets-3.1.5/

2.配置wxWidgets

在安装wxWidgets之前,您需要对其进行配置。可以通过执行以下命令进行配置:

./configure –prefix=/usr/local/wxWidgets-3.1.5

这将使用/usr/local/wxWidgets-3.1.5路径处的默认目录进行安装。如果您想更改wxWidgets的安装目录,可以将“/usr/local/wxWidgets-3.1.5”更改为您想要的目录。

3.构建程序

运行以下命令开始构建wxWidgets:

make

4.安装wxWidgets

构建完成后,运行以下命令进行安装:

make install

五、确认是否有正确安装

一旦安装完成后,可以通过执行以下命令来验证安装是否正确:

wx-config –version

此外,还可以执行以下命令来列出wxWidgets的构建选项:

wx-config –list

如果您看到类似的输出,则表示wxWidgets已经成功地安装在您的Linux系统上。

六、在应用程序中使用wxWidgets

在您的应用程序中,您需要指定wxWidgets头和库的路径,以允许编译器正确地链接它们。您可以通过运行以下命令来查找wx-config二进制文件的路径:

which wx-config

一旦找到wx-config路径,您可以使用wx-config命令来获取wx-widgets的路径。

七、

在Linux上安装wxWidgets非常简单,只需要执行以下步骤:

1.下载并提取wxWidgets源代码。

2.进入wxWidgets目录并执行./configure –prefix=/usr/local/wxWidgets-3.1.5配置。

3.构建程序并安装它们。

4.最后通过验证输出来确认是否已正确安装wxWidgets。

如果您按照上述步骤进行操作,则可以在几分钟内成功地安装wxWidgets,并开始使用它们构建各种类型的应用程序。

相关问题拓展阅读:

如何参与到wxwidgets的开发中去

wxWidgets是一个跨平台的软件开发包。它诞生于1992年,最初的名子是wxWindows,但由于Microsoft的,在2023年改名为wxWidgets。它最初是被设计成跨平台搭带的GUI软件开发包,但后来随着越来越多的人参与进来,为wxWidgets加入了许多非GUI的功能,如多线程(MultiThread)、网络(Network)等。并且从最初的只支持C++语言,逐渐发展成为支持数种语言(如Python、Perl、C#、Basic等)。因此,现在的wxWidgets已经不再是单纯的跨平台的GUI软件开发包,而是一个可以支持多种操作系统平台的能够在多种语言中使用的通用跨平台软件开发包。

由于wxWidgets最开始是为C++而设计的,因此,本文主要讨论了wxWidgets在C++中的使用。

为什么选择wxWidgets?

目前支持C++的软件开发包非常多,比较有名的除了wxWidgets外,还有一些其它的软件开发包,如MFC、QT、ACE等。即然有这么多开发包,那么我们为什么要使用wxWidgets呢?在给出答案之前,让我巧扒们首先来看一看上述的三种软件开发包的特性。

1.MFC

MFC是Microsoft提供的软件开发包。MFC虽然十分强大,但它只能运行在Windows下运行。而且它是收费的。

2. QT

QT是由Trolltech 公司开发的一套跨平台软件开发包。它和wxWidgets类似,但是QT只在linux下免费,而在Windows或Unix下使用QT要向Trolltech公司支付版权费。

3. ACE

ACE虽然是免费开源的,但是它没有提供GUI功能。

从以上三个软件开发包可以看出,它们虽然有各自的优势,但是它们或多或少地都会使开发受到限制。而使用wxWidgets将不会有以上所述的问题。wxWidgets和MFC、QT、 ACE的特性对比如表1所示。

注:其中免费中的“是/否”代表QT在linux平台上的Free Edition是免费的,而在windows和unix下使用QT是收费的。而开源中的“是/否”代表QT有一个基于GPL的开源版本,但要进行商业开发,需要使用它的商业版本。

使用wxWidgets编写程序

学习一种编程语言的更好方法就是用它去编写程序,学习wxWidgets也不例外。由于wxWidgets的主要功能是实现跨平台的GUI,因此,本文主要从GUI入手,讨论wxWidgets在C++中如何编写跨平台孝枝昌的应用程序

1. 应用程序类的建立

使用wxWidgets建立系统需要一个类来描述整个应用程序。这个类必须从wxApp类继承。

class MyApp : public wxApp //应用程序类

{

public:

virtual bool OnInit(); // 在应用程序启动时调用,如果返回false,退出应用程序

};

这个类只覆盖了wxApp的一个虚方法OnInit。可以用这个方法在程序启动时做一些验证,如果验证失败,可以通过返回false退出应用程序。当然,由于这个函数是应用程序的入口点,所以建立主窗体的工作要在这个函数中完成。

2. 建立窗体类

wxWidgets中关于窗体的类很多,如果要建立一般窗体的话,可以从wxFrame继承。

class MyFrame : public wxFrame //窗体类

{

public:

MyFrame(const wxString& title); // 窗体的构造函数

};

3. 向窗体中加入控件

在本文中向这个窗体加入了一个菜单条(Menu Bar)、一个状态条、一个Panel和一个按钮。一般我们会在主窗体的构造函数中加入这些控件。

MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)

{

wxMenu *fileMenu = new wxMenu; // 建立“文件”菜单

wxMenu *helpMenu = new wxMenu; // 建立“帮助”菜单

// 向菜单中添加子项

helpMenu->Append(wxID_ABOUT, _T(“关于”tF1”), _T(“显示关于对话框”));

fileMenu->Append(wxID_EXIT, _T(“退出”tAlt-X”), _T(“退出应用程序”));

wxMenuBar *menuBar = new wxMenuBar(); // 建立一个菜单条

menuBar->Append(fileMenu, _T(“文件”)); //将“文件”菜单加入到菜单条

menuBar->Append(helpMenu, _T(“帮助”)); //将“帮助”菜单加入到菜单条

SetMenuBar(menuBar); //将菜单条放到窗体上

wxPanel *panel = new wxPanel(this); //建立一个Panel

wxButton *button = new wxButton(panel, wxID_ABOUT, “关于”, wxPoint(20, 20), wxSize(50, 30)); //建立一个Button

CreateStatusBar(2); //建立一个两栏的状态栏

SetStatusText(_T(“欢迎使用wxWidgets!”)); //设置状态栏的文本

在数组sample_xpm中描述了sample.ico的属性和图标本身。如X代表红色; o代表黄色等。然后在源程序中通过include “sample.xpm”引用这个资源文件。要想从这个资源文件中装载图标。可使用SetIcon(wxICON(sample)); wxICON读取资源文件,而SetIcon将这个图标设置为frame的标题栏图标。要想将ico文件转换为这种资源文件,可使用一个免费软件XnView进行转换。

5. 显示主窗体

显示主窗体非常简单,只需要将上面建立的MyFrame类实例化,并调用wxFrame的Show方法显示即可。这些代码可以写在MyApp类的OnInit方法中。

bool MyApp::OnInit()

{

//建立MyFrame类的实例

MyFrame *frame = new MyFrame(_T(“之一个wxWidgets程序”));

frame->Show(true); //显示主窗体

return true; //必须返回true,否则应用程序将退出

}

在以上代码中Show方法有一个参数,如果为true,则以模式窗口的形式显示,否则以非模式窗口的形式显示。

6. 向窗体中加入事件

到目前为止,这个程序的界面已经完成了,但还未响应任何事件,下面就详细阐述如何向这个应用程序中加入事件代码。

对于事件来说,一般都会由两部分组成。

(1)调用事件部分

当程序发生某个动作时,如点击按钮;选中某个控件,可能需要执行一段代码。而这段代码一般是由系统负责调用的,也就是说系统通过事件函数指针调用相应的代码。

(2)事件函数本身

事件函数与普通函数一样,只不过它是在发生了事件之后,由系统调用的。

在wxWidgets中是通过事件哈希表(Event Hash Table)来进行事件处理的,即将相应的事件函数指针保存在一个哈希表中,然后当事件发生时,从这个哈希表中找到相应的事件函数指针,然后通过函数指针调用函数。在使用事件哈希表之前,必须定义它。由于定义哈希表非常复杂,而且每个需要处理事件的类都需要同样的代码,因此,wxWidgets为此定义了一个宏DECLARE_EVENT_TABLE()来定义哈希表。可将这个宏写在MyFrame类的任何位置。它相当于将以下语句放到了MyFrame类中。

private:

static const wxEventTableEntry _eventTableEntries;

protected:

static const wxEventTable _eventTable;

virtual const wxEventTable* GetEventTable() const;

static wxEventHashTable _eventHashTable;

virtual wxEventHashTable& GetEventHashTable() const;

其中静态数组变量_eventTableEntries保存了MyFrame类中的所有的事件信息。

上面的代码声明了处理事件哈希表的一些方法,即然声明了,就得实现。由于实现代码也都一样,因此,wxWidgets也为实现这些方法定义了一组宏。实现这些方法的宏如下所示。

BEGIN_EVENT_TABLE(MyFrame, wxFrame)

EVT_MENU(wxID_EXIT, MyFrame::OnQuit)

EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)

EVT_BUTTON(wxID_ABOUT, MyFrame::OnAbout)

END_EVENT_TABLE()

其中BEGIN_EVENT_TABLE(…)实现了上面定义的方法,以及初始化了静态变量_eventTable。后面两个EVT_MENU和一个EVT_BUTTON宏初始化了静态变量_eventTableEntries,即将这两个事件函数的指针(button和about菜单使用一个事件函数OnAbout)和控件ID保存在_eventTableEntries中,最后的END_EVENT_TABLE()宏做为一个空的事件函数指针赋给了_eventTableEntries,这有些象C语言中处理字符串,将最后一个字符赋为’”0’,这样就可以知道哪是结尾了。

向窗体中加入事件的最后一步是声明和实现事件函数。在本例中声明了两个事件函数。

void OnQuit(wxCommandEvent& event);

void OnAbout(wxCommandEvent& event);

可以将这两个函数声明放到MyFrame中的任何位置。下面是它们的实现代码。

void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))

{

Close(true);

}

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))

{

wxString msg;

msg.Printf( _T(“这是一个关于对话框的例子.”n”)

_T(“欢迎使用 %s”), wxVERSION_STRING);

wxMessageBox(msg, _T(“¹关于”), wxOK | wxICON_INFORMATION, this);

}

其中OnQuit函数调用Close(true)关闭MyFrame,由于MyFrame是主窗体,因此,在MyFrame关闭后,应用程序也随之关闭了。OnAbout使用wxMessageBox函数弹出一个信息对话框。

7. 运行程序

到目前为止,这个程序的代码已经基本完成了,但是在前面曾说过,MyApp中的OnInit方法在应用程序启动时执行,那么是谁调用了OnInit方法呢?答案当然是wxWidgets。wxWidgets为了调用这个方法,提供了一个宏IMPLEMENT_APP(…),这个宏有一个参数,需要将MyApp做为参数传入。即IMPLEMENT_APP(MyApp)。这个宏相当于一个WinMain函数(和控制台程序的main函数类似),即在WinMain函数中调用了MyApp中的OnInit函数。在加入这个宏后,就可使用一个C++编译器将以上的源程序编译生成exe文件了。

linux下的api数量那么少,如何编写图形界面?

Linux编写图形界面的话,目前比较流行的就是GTK+、Qt和wxWidgets,前一个基于C语言开发,后两个基于C++开发,下面我分别简单介绍一下,感兴趣的朋友可以尝试一下:

GTK+

这是一个免费、开源、跨平台的GUI开发工具包,基于C语言开发而来,著名的GNOME桌面就是采用这个工具开发,自带了大量组件和容器,可以轻松布局开发任意Linux桌面程序,如果你本身只熟悉C语言的话,可以使用一下这个工具包,非常不错,简单易学,非常容易上手,而且官方自带了丰富的Demo示例,都有源码可供参考和学习:

Qt

这是一个免费、开源、跨平台的应用程序开发框架,基于C++开发而来,著名的LinuxKDE桌面就采用这个框架开卜桐戚发,自带了可视化设计界面,包含了大量组轮旦件和容器,只需简单拖拽、编辑属性,就可快速创建一个GUI程序,官方资料丰富,社区文档全面,对于Linux桌面开发来说,非常不错,值得使用和学习:

wxWidgets

这也是一个非常著名的跨平台界面开发库,免费、开源,基于C++开发而来,与Qt仿平台外观不同,wxWidgets使用平台库创建图形接口,不需要在代码上添加额外的层,因此更高效,型陵社区文档丰富,资料教程全面,不管是私用还是商用,都完全免费,如果你本身只熟悉C++,需要做Linux界面开发的话,那么wxWidgets就是一个非常不错的选择:

当然,除了以上3种工具或框架,还有许多其他编程语言也可开发LinuxGUI程序,像Java的Swing,Python的Tkinter等都非常不错,根据实际项目需求,选择合适的一种就行,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

linux wxwidgets 安装的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux wxwidgets 安装,如何在Linux上安装wxWidgets?,如何参与到wxwidgets的开发中去,linux下的api数量那么少,如何编写图形界面?的信息别忘了在本站进行查找喔。


数据运维技术 » 如何在Linux上安装wxWidgets? (linux wxwidgets 安装)