新聞中心
wxWidgets是一個跨平臺的C++應(yīng)用程序框架,它提供了豐富的GUI工具和一系列的函數(shù)庫,可以用于開發(fā)各種類型的應(yīng)用程序。wxWidgets已經(jīng)成為Linux等操作系統(tǒng)中廣泛使用的開發(fā)工具之一。本文將向您介紹如何在Linux上安裝wxWidgets。

鳩江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
一、準(zhǔn)備工作
在安裝wxWidgets之前,您需要滿足以下條件:
1. Linux操作系統(tǒng)。
2. C++編譯器或環(huán)境。
3.用于構(gòu)建應(yīng)用程序的Make命令。
4.用于下載和提取wxWidgets源代碼的解壓工具,如tar命令。
二、下載wxWidgets源代碼
您可以在wxWidgets官方網(wǎng)站上下載wxWidgets。特別是,您需要下載最新的wxWidgets源代碼。目前最新版本的wxWidgets為3.1.5。您可以通過訪問以下網(wǎng)址下載:
https://www.wxwidgets.org/downloads/
下載完成后,您將得到一個wxWidgets源代碼的tarball文件。
三、提取wxWidgets源代碼
一旦您已經(jīng)下載了wxWidgets源代碼的tarball文件,那么您需要提取它。您可以使用tar命令來提?。?/p>
tar -zxvf wxWidgets-x.x.x.tar.gz
請將“x.x.x”替換為您下載的wxWidgets版本號。例如,如果您下載的是wxWidgets 3.1.5,則命令如下:
tar -zxvf wxWidgets-3.1.5.tar.gz
四、構(gòu)建和安裝wxWidgets
1.進(jìn)入wxWidgets目錄
解壓之后,您將在當(dāng)前目錄中得到一個wxWidgets文件夾。需要進(jìn)入此時目錄,用以執(zhí)行下一步的構(gòu)建和安裝步驟。例如,如果wxWidgets目錄的完整路徑是~/Downloads/wxWidgets-3.1.5,則您可以按以下方式進(jìn)入目錄:
cd ~/Downloads/wxWidgets-3.1.5/
2.配置wxWidgets
在安裝wxWidgets之前,您需要對其進(jìn)行配置。可以通過執(zhí)行以下命令進(jìn)行配置:
./configure –prefix=/usr/local/wxWidgets-3.1.5
這將使用/usr/local/wxWidgets-3.1.5路徑處的默認(rèn)目錄進(jìn)行安裝。如果您想更改wxWidgets的安裝目錄,可以將“/usr/local/wxWidgets-3.1.5”更改為您想要的目錄。
3.構(gòu)建程序
運(yùn)行以下命令開始構(gòu)建wxWidgets:
make
4.安裝wxWidgets
構(gòu)建完成后,運(yùn)行以下命令進(jìn)行安裝:
make install
五、確認(rèn)是否有正確安裝
一旦安裝完成后,可以通過執(zhí)行以下命令來驗證安裝是否正確:
wx-config –version
此外,還可以執(zhí)行以下命令來列出wxWidgets的構(gòu)建選項:
wx-config –list
如果您看到類似的輸出,則表示wxWidgets已經(jīng)成功地安裝在您的Linux系統(tǒng)上。
六、在應(yīng)用程序中使用wxWidgets
在您的應(yīng)用程序中,您需要指定wxWidgets頭和庫的路徑,以允許編譯器正確地鏈接它們。您可以通過運(yùn)行以下命令來查找wx-config二進(jìn)制文件的路徑:
which wx-config
一旦找到wx-config路徑,您可以使用wx-config命令來獲取wx-widgets的路徑。
七、
在Linux上安裝wxWidgets非常簡單,只需要執(zhí)行以下步驟:
1.下載并提取wxWidgets源代碼。
2.進(jìn)入wxWidgets目錄并執(zhí)行./configure –prefix=/usr/local/wxWidgets-3.1.5配置。
3.構(gòu)建程序并安裝它們。
4.最后通過驗證輸出來確認(rèn)是否已正確安裝wxWidgets。
如果您按照上述步驟進(jìn)行操作,則可以在幾分鐘內(nèi)成功地安裝wxWidgets,并開始使用它們構(gòu)建各種類型的應(yīng)用程序。
相關(guān)問題拓展閱讀:
- 如何參與到wxwidgets的開發(fā)中去
- linux下的api數(shù)量那么少,如何編寫圖形界面?
如何參與到wxwidgets的開發(fā)中去
wxWidgets是一個跨平臺的軟件開發(fā)包。它誕生于1992年,最初的名子是wxWindows,但由于Microsoft的,在2023年改名為wxWidgets。它最初是被設(shè)計成跨平臺搭帶的GUI軟件開發(fā)包,但后來隨著越來越多的人參與進(jìn)來,為wxWidgets加入了許多非GUI的功能,如多線程(MultiThread)、網(wǎng)絡(luò)(Network)等。并且從最初的只支持C++語言,逐漸發(fā)展成為支持?jǐn)?shù)種語言(如Python、Perl、C#、Basic等)。因此,現(xiàn)在的wxWidgets已經(jīng)不再是單純的跨平臺的GUI軟件開發(fā)包,而是一個可以支持多種操作系統(tǒng)平臺的能夠在多種語言中使用的通用跨平臺軟件開發(fā)包。
由于wxWidgets最開始是為C++而設(shè)計的,因此,本文主要討論了wxWidgets在C++中的使用。
為什么選擇wxWidgets?
目前支持C++的軟件開發(fā)包非常多,比較有名的除了wxWidgets外,還有一些其它的軟件開發(fā)包,如MFC、QT、ACE等。即然有這么多開發(fā)包,那么我們?yōu)槭裁匆褂脀xWidgets呢?在給出答案之前,讓我巧扒們首先來看一看上述的三種軟件開發(fā)包的特性。
1.MFC
MFC是Microsoft提供的軟件開發(fā)包。MFC雖然十分強(qiáng)大,但它只能運(yùn)行在Windows下運(yùn)行。而且它是收費(fèi)的。
2. QT
QT是由Trolltech 公司開發(fā)的一套跨平臺軟件開發(fā)包。它和wxWidgets類似,但是QT只在linux下免費(fèi),而在Windows或Unix下使用QT要向Trolltech公司支付版權(quán)費(fèi)。
3. ACE
ACE雖然是免費(fèi)開源的,但是它沒有提供GUI功能。
從以上三個軟件開發(fā)包可以看出,它們雖然有各自的優(yōu)勢,但是它們或多或少地都會使開發(fā)受到限制。而使用wxWidgets將不會有以上所述的問題。wxWidgets和MFC、QT、 ACE的特性對比如表1所示。
注:其中免費(fèi)中的“是/否”代表QT在linux平臺上的Free Edition是免費(fèi)的,而在windows和unix下使用QT是收費(fèi)的。而開源中的“是/否”代表QT有一個基于GPL的開源版本,但要進(jìn)行商業(yè)開發(fā),需要使用它的商業(yè)版本。
使用wxWidgets編寫程序
學(xué)習(xí)一種編程語言的更好方法就是用它去編寫程序,學(xué)習(xí)wxWidgets也不例外。由于wxWidgets的主要功能是實現(xiàn)跨平臺的GUI,因此,本文主要從GUI入手,討論wxWidgets在C++中如何編寫跨平臺孝枝昌的應(yīng)用程序
1. 應(yīng)用程序類的建立
使用wxWidgets建立系統(tǒng)需要一個類來描述整個應(yīng)用程序。這個類必須從wxApp類繼承。
class MyApp : public wxApp //應(yīng)用程序類
{
public:
virtual bool OnInit(); // 在應(yīng)用程序啟動時調(diào)用,如果返回false,退出應(yīng)用程序
};
這個類只覆蓋了wxApp的一個虛方法OnInit。可以用這個方法在程序啟動時做一些驗證,如果驗證失敗,可以通過返回false退出應(yīng)用程序。當(dāng)然,由于這個函數(shù)是應(yīng)用程序的入口點(diǎn),所以建立主窗體的工作要在這個函數(shù)中完成。
2. 建立窗體類
wxWidgets中關(guān)于窗體的類很多,如果要建立一般窗體的話,可以從wxFrame繼承。
class MyFrame : public wxFrame //窗體類
{
public:
MyFrame(const wxString& title); // 窗體的構(gòu)造函數(shù)
};
3. 向窗體中加入控件
在本文中向這個窗體加入了一個菜單條(Menu Bar)、一個狀態(tài)條、一個Panel和一個按鈕。一般我們會在主窗體的構(gòu)造函數(shù)中加入這些控件。
MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
{
wxMenu *fileMenu = new wxMenu; // 建立“文件”菜單
wxMenu *helpMenu = new wxMenu; // 建立“幫助”菜單
// 向菜單中添加子項
helpMenu->Append(wxID_ABOUT, _T(“關(guān)于”tF1”), _T(“顯示關(guān)于對話框”));
fileMenu->Append(wxID_EXIT, _T(“退出”tAlt-X”), _T(“退出應(yīng)用程序”));
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, “關(guān)于”, wxPoint(20, 20), wxSize(50, 30)); //建立一個Button
CreateStatusBar(2); //建立一個兩欄的狀態(tài)欄
SetStatusText(_T(“歡迎使用wxWidgets!”)); //設(shè)置狀態(tài)欄的文本
在數(shù)組sample_xpm中描述了sample.ico的屬性和圖標(biāo)本身。如X代表紅色; o代表黃色等。然后在源程序中通過include “sample.xpm”引用這個資源文件。要想從這個資源文件中裝載圖標(biāo)。可使用SetIcon(wxICON(sample)); wxICON讀取資源文件,而SetIcon將這個圖標(biāo)設(shè)置為frame的標(biāo)題欄圖標(biāo)。要想將ico文件轉(zhuǎn)換為這種資源文件,可使用一個免費(fèi)軟件XnView進(jìn)行轉(zhuǎn)換。
5. 顯示主窗體
顯示主窗體非常簡單,只需要將上面建立的MyFrame類實例化,并調(diào)用wxFrame的Show方法顯示即可。這些代碼可以寫在MyApp類的OnInit方法中。
bool MyApp::OnInit()
{
//建立MyFrame類的實例
MyFrame *frame = new MyFrame(_T(“之一個wxWidgets程序”));
frame->Show(true); //顯示主窗體
return true; //必須返回true,否則應(yīng)用程序?qū)⑼顺?/p>
}
在以上代碼中Show方法有一個參數(shù),如果為true,則以模式窗口的形式顯示,否則以非模式窗口的形式顯示。
6. 向窗體中加入事件
到目前為止,這個程序的界面已經(jīng)完成了,但還未響應(yīng)任何事件,下面就詳細(xì)闡述如何向這個應(yīng)用程序中加入事件代碼。
對于事件來說,一般都會由兩部分組成。
(1)調(diào)用事件部分
當(dāng)程序發(fā)生某個動作時,如點(diǎn)擊按鈕;選中某個控件,可能需要執(zhí)行一段代碼。而這段代碼一般是由系統(tǒng)負(fù)責(zé)調(diào)用的,也就是說系統(tǒng)通過事件函數(shù)指針調(diào)用相應(yīng)的代碼。
(2)事件函數(shù)本身
事件函數(shù)與普通函數(shù)一樣,只不過它是在發(fā)生了事件之后,由系統(tǒng)調(diào)用的。
在wxWidgets中是通過事件哈希表(Event Hash Table)來進(jìn)行事件處理的,即將相應(yīng)的事件函數(shù)指針保存在一個哈希表中,然后當(dāng)事件發(fā)生時,從這個哈希表中找到相應(yīng)的事件函數(shù)指針,然后通過函數(shù)指針調(diào)用函數(shù)。在使用事件哈希表之前,必須定義它。由于定義哈希表非常復(fù)雜,而且每個需要處理事件的類都需要同樣的代碼,因此,wxWidgets為此定義了一個宏DECLARE_EVENT_TABLE()來定義哈希表??蓪⑦@個宏寫在MyFrame類的任何位置。它相當(dāng)于將以下語句放到了MyFrame類中。
private:
static const wxEventTableEntry _eventTableEntries;
protected:
static const wxEventTable _eventTable;
virtual const wxEventTable* GetEventTable() const;
static wxEventHashTable _eventHashTable;
virtual wxEventHashTable& GetEventHashTable() const;
其中靜態(tài)數(shù)組變量_eventTableEntries保存了MyFrame類中的所有的事件信息。
上面的代碼聲明了處理事件哈希表的一些方法,即然聲明了,就得實現(xiàn)。由于實現(xiàn)代碼也都一樣,因此,wxWidgets也為實現(xiàn)這些方法定義了一組宏。實現(xiàn)這些方法的宏如下所示。
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(…)實現(xiàn)了上面定義的方法,以及初始化了靜態(tài)變量_eventTable。后面兩個EVT_MENU和一個EVT_BUTTON宏初始化了靜態(tài)變量_eventTableEntries,即將這兩個事件函數(shù)的指針(button和about菜單使用一個事件函數(shù)OnAbout)和控件ID保存在_eventTableEntries中,最后的END_EVENT_TABLE()宏做為一個空的事件函數(shù)指針賦給了_eventTableEntries,這有些象C語言中處理字符串,將最后一個字符賦為’”0’,這樣就可以知道哪是結(jié)尾了。
向窗體中加入事件的最后一步是聲明和實現(xiàn)事件函數(shù)。在本例中聲明了兩個事件函數(shù)。
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
可以將這兩個函數(shù)聲明放到MyFrame中的任何位置。下面是它們的實現(xiàn)代碼。
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxString msg;
msg.Printf( _T(“這是一個關(guān)于對話框的例子.”n”)
_T(“歡迎使用 %s”), wxVERSION_STRING);
wxMessageBox(msg, _T(“1關(guān)于”), wxOK | wxICON_INFORMATION, this);
}
其中OnQuit函數(shù)調(diào)用Close(true)關(guān)閉MyFrame,由于MyFrame是主窗體,因此,在MyFrame關(guān)閉后,應(yīng)用程序也隨之關(guān)閉了。OnAbout使用wxMessageBox函數(shù)彈出一個信息對話框。
7. 運(yùn)行程序
到目前為止,這個程序的代碼已經(jīng)基本完成了,但是在前面曾說過,MyApp中的OnInit方法在應(yīng)用程序啟動時執(zhí)行,那么是誰調(diào)用了OnInit方法呢?答案當(dāng)然是wxWidgets。wxWidgets為了調(diào)用這個方法,提供了一個宏IMPLEMENT_APP(…),這個宏有一個參數(shù),需要將MyApp做為參數(shù)傳入。即IMPLEMENT_APP(MyApp)。這個宏相當(dāng)于一個WinMain函數(shù)(和控制臺程序的main函數(shù)類似),即在WinMain函數(shù)中調(diào)用了MyApp中的OnInit函數(shù)。在加入這個宏后,就可使用一個C++編譯器將以上的源程序編譯生成exe文件了。
linux下的api數(shù)量那么少,如何編寫圖形界面?
Linux編寫圖形界面的話,目前比較流行的就是GTK+、Qt和wxWidgets,前一個基于C語言開發(fā),后兩個基于C++開發(fā),下面我分別簡單介紹一下,感興趣的朋友可以嘗試一下:
GTK+
這是一個免費(fèi)、開源、跨平臺的GUI開發(fā)工具包,基于C語言開發(fā)而來,著名的GNOME桌面就是采用這個工具開發(fā),自帶了大量組件和容器,可以輕松布局開發(fā)任意Linux桌面程序,如果你本身只熟悉C語言的話,可以使用一下這個工具包,非常不錯,簡單易學(xué),非常容易上手,而且官方自帶了豐富的Demo示例,都有源碼可供參考和學(xué)習(xí):
Qt
這是一個免費(fèi)、開源、跨平臺的應(yīng)用程序開發(fā)框架,基于C++開發(fā)而來,著名的LinuxKDE桌面就采用這個框架開卜桐戚發(fā),自帶了可視化設(shè)計界面,包含了大量組輪旦件和容器,只需簡單拖拽、編輯屬性,就可快速創(chuàng)建一個GUI程序,官方資料豐富,社區(qū)文檔全面,對于Linux桌面開發(fā)來說,非常不錯,值得使用和學(xué)習(xí):
wxWidgets
這也是一個非常著名的跨平臺界面開發(fā)庫,免費(fèi)、開源,基于C++開發(fā)而來,與Qt仿平臺外觀不同,wxWidgets使用平臺庫創(chuàng)建圖形接口,不需要在代碼上添加額外的層,因此更高效,型陵社區(qū)文檔豐富,資料教程全面,不管是私用還是商用,都完全免費(fèi),如果你本身只熟悉C++,需要做Linux界面開發(fā)的話,那么wxWidgets就是一個非常不錯的選擇:
當(dāng)然,除了以上3種工具或框架,還有許多其他編程語言也可開發(fā)LinuxGUI程序,像Java的Swing,Python的Tkinter等都非常不錯,根據(jù)實際項目需求,選擇合適的一種就行,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你有所幫助吧,也歡迎大家評論、留言進(jìn)行補(bǔ)充。
linux wxwidgets 安裝的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux wxwidgets 安裝,如何在Linux上安裝wxWidgets?,如何參與到wxwidgets的開發(fā)中去,linux下的api數(shù)量那么少,如何編寫圖形界面?的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
分享文章:如何在Linux上安裝wxWidgets? (linux wxwidgets 安裝)
本文地址:http://m.fisionsoft.com.cn/article/cojcjpi.html


咨詢
建站咨詢
