免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
wxWidgets GUI 編程介紹

導(dǎo)論

wxWidgets 是C++的跨平臺開發(fā)框架。它由 Julian Smart 于1992年在愛丁堡大學(xué)人工智能應(yīng)用研究院發(fā)起的,自那之后,該框架分發(fā)到了眾多平臺之上。

本文旨在引導(dǎo)初學(xué)者安裝所需資源并以Code::Blocks作為IDE使用wxWidgets開發(fā)一個單應(yīng)用程序。

什么是wxWidgets

wxWidgets 是一系列C++庫,它遵循多平臺GUI開發(fā)框架的設(shè)計規(guī)則。它有類似于MFC易于使用的API。把它和特定的庫鏈接并編譯,可是你的應(yīng)用程序與目標(biāo)平臺的界面相似。wxWidgets 是一個非常完整的框架,它幾乎為你任何需求提供解決方案,并簡化使用習(xí)慣。

徐繼開
翻譯于 5個月前

3人頂

 翻譯的不錯哦!

為什么是wxWidgets

對于跨平臺GUI開發(fā)有很多可選的選項。可能最流行的是Java,但是對于許多應(yīng)用程序而言這不是一個有效率的選擇。在C++中有QT,一個非常不錯的框架,但是它也有許多不足之處,第一點,它是仿平臺外觀的,而wxWidgets使用平臺庫創(chuàng)建圖形接口;第二點,在你寫的代碼與最終被編譯的C++代碼之間,QT采用了一種與眾不同的方式去使用一個專屬的層。這里不提及微軟的可視化框架,它只能工作在windows上,與它類似還有mono.net,它是搭建在層上的層。

與之相反的例子wxWidgets是C++的,它是高效的,并且不用在你的代碼上添加額外的層。它是一個類庫的集合,因此你可以使用C++編譯器去編譯它,不是說每一種C++編譯器都可以,但是大多數(shù)通用的都可以。

其他的優(yōu)勢和特點:

  • 它一直在被開發(fā),還有很多支持,更是協(xié)作的開放源代碼社區(qū)。

  • 它完全免費,無論是私人用途還是商業(yè)用途。

  • 有大量的在線文檔。

  • 容易學(xué)習(xí),它就是C++。

  • 有很多現(xiàn)成的類和庫,參看這里。

無若
翻譯于 5個月前

1人頂

 翻譯的不錯哦!

開始

讓我們開始工作吧. 首先我們需要框架本身和IDE讓我們可以開始開發(fā)。然后我們可以做些魔術(shù),把“hello,world“打到我們的屏幕上。

安裝

我會展示windows環(huán)境的安裝步驟,其他操作系統(tǒng)也類似。我使用Code::Blocks作為IDE因為它和wxWidgets結(jié)合的很好,并且它對windows和linux都有免費的穩(wěn)定版本。

1. 下載和安裝Code::Blocks

你可以從它自己的官網(wǎng)網(wǎng)址【http://www.codeblocks.org/downloads/26】去下載二進(jìn)制版本,我建議你下載最新的mingw的穩(wěn)定版本呢,現(xiàn)在最穩(wěn)定版本是codeblocks-13.12mingw-setup,它會自帶mingw編譯器。下載并且安裝,就像其他經(jīng)典的windows安裝程序一樣?;蛟S你需要把 mingw/bin寫到環(huán)境變量PATH中,如果有人不知道怎么做,我可以增加更詳細(xì)的步驟。

嘉言懿行
翻譯于 5個月前

1人頂

 翻譯的不錯哦!

其它翻譯版本(1)

2. 下載,安裝和編譯wxWidgets

你可以從wxWidgets的存儲庫中下載wxWidgets資源。下載wxMSW安裝器或者ZIP,因為安裝程序就是一個壓縮文件夾。下載穩(wěn)定的realease 2.8.12版本,因為它是最兼容Code::Block的分支。

如果你已經(jīng)下載安裝器或者ZIP文件,就把它安裝或者解壓到C:\目錄下。然后在標(biāo)準(zhǔn)的windows控制臺上打開命令行shell(cmd),更改wxWidgets的生成目錄。

關(guān)鍵是去編譯wxWidgets的時候,使用一樣的編譯器,你會在稍后開發(fā)的時候使用到。如果你已經(jīng)安裝了Code::Block IDE和mingw,并且添加路徑(mingw/bin)到環(huán)境變量中,這樣你就不會有任何問題。

1
cd <wxwidgets>\build\msw

<wxwidgets>是你提取資源的路徑(典型的是 C:\wxWidgets-2.8.12)。

你必須執(zhí)行生成命令,gcc編譯器可以像這樣輸入:

1
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport

花點時間去看看編譯的變量,這樣你就可以選擇更適合你的需要變量選項:

BUILD:wxWidget的生成類型。在大多數(shù)情況下你會使用‘release’選項,因為你不會去調(diào)試wxWidgets本身。你可以調(diào)試你自己的程序鏈接到一個release版本的wxWidgets。

無若
翻譯于 5個月前

1人頂

 翻譯的不錯哦!

SHARED: 這個變量定義了鏈接類型: 動態(tài)鏈接 (SHARED=1)下你必須把所需要的DLL和你的程序一同發(fā)布,而在靜態(tài)鏈接(SHARED=0)下你只需要發(fā)布你的程序本身。動態(tài)鏈接下生成的程序體積更小,但你需要相應(yīng)的DLL才能運行它。

MONOLITHIC: 控制編譯生成一個DLL(MONOLITHIC=1)還是多個DLL(MONOLITHIC=0)。當(dāng)monolithic開關(guān)打開時,開發(fā)更加簡單,你只需要在發(fā)布你的程序時攜帶一個DLL;然而monolithic開關(guān)關(guān)閉時,鏈接過程會更有效率,因為這樣避免了鏈接整個wxWidget代碼庫。

UNICODE: 定義wxWidget和你的程序是使用寬字符字符串(UNICODE=1)還是ANSI(UNICODE=0)。強(qiáng)烈建議使用wxWidget的 _("string") 和 _T("string") 宏來確保你的硬編碼字符串格式正確。

現(xiàn)在,wxWidgets已經(jīng)編譯完畢,那么就讓我們開始寫幾個以它為框架的程序吧。

htfy96
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

新建工程

1.首先啟動Code::Blocks,點擊“創(chuàng)建新工程”

2.在項目選擇窗口中選擇wxWidget

3.現(xiàn)在你需要選擇wxWidgets版本。請確保選擇你當(dāng)前安裝的版本。本教程中,請選擇2.8.x

4. 然后會出現(xiàn)一個項目命名窗口。在這里,你可以為命名項目并且選擇存儲位置。我這里取名為HelloWorld

5. 現(xiàn)在,你需要選擇GUI Builder,這是一個幫助你在圖形化界面下創(chuàng)建圖形化界面的工具。我們這里選擇xwSmith。在應(yīng)用類型中,選擇Frame Based

0x0bject
翻譯于 5個月前

0人頂

 翻譯的不錯哦!

6. 下一步,請選擇你電腦本地wxWidgets的位置。最好的選擇是保持全局環(huán)境變量不變。點擊下一步時,將會彈出全局變量菜單,所以你必須在base欄中填入wxWidgets的路徑。如果你改變了wxWidgets的位置,你需要在Code::Blocks配置中編輯全局變量。

7. 選擇編譯器。默認(rèn)GCC編譯器就可以了。

8. 現(xiàn)在,你有許多配置選項。在第一個選項中,你需要保證這個選項和你構(gòu)建wxWidgets時使用同樣的選項。

“Use wxWidgets DLL”, 如果你構(gòu)建時SHARED=1,請選擇該項。

“wxWidgets is built as a monolithic library”, 如果你構(gòu)建時MONOLITHIC=1,請選擇該項。

“Enable unicode”,  構(gòu)建時UNICODE=1,請選擇該項。

舉例來說,在上述截圖中我并沒有選擇Use wxWidgets DLL是因為我在構(gòu)建wxWidgets時使用了SHARED=0.

在Configure Advance Options前打勾。

0x0bject
翻譯于 5個月前

0人頂

 翻譯的不錯哦!

9. 最后一個窗口,確保Use __WXDEBUG__ and Debug wxWidgets lib 選項不被選中

有可能在你按下Finish的時候。屏幕上出現(xiàn)了一個對話框,告訴你沒有調(diào)試版,點擊Accept 。你可以沒有任何問題的使用發(fā)布版wxWidget來調(diào)試。

10. 現(xiàn)在,我們面對著開發(fā)的窗口,事情應(yīng)該像下圖一樣。

htfy96
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

給我們的窗口加點東西

如果你按下了Build and Run按鈕(有齒輪和三角形[播放圖標(biāo)]的那個),就會顯示一個有一個菜單欄和兩個選項(Menu和Help)的小窗口,上面還有一個空的Status Bar。但是檢查一下一切是否工作正??偸呛玫?。

現(xiàn)在我將敘述如何給我們的窗口加上文本標(biāo)簽和按鈕。我并不會對你能使用的許多選項和窗口部件深入論述,因為這篇教程的目的僅僅是一個對于該框架的簡介。但是,我還是會說一些關(guān)于開發(fā)環(huán)境的內(nèi)容。

在屏幕中央我們能看到“設(shè)計”窗口。在該窗口中我們可以編輯圖形界面或是代碼,具體是什么取決于我們正在編輯的文件。在其之上有兩個按鈕,一個打開菜單按鈕編輯器,另一個打開狀態(tài)欄編輯器。但是最重要的是在設(shè)計窗口下面的部分,在那里我們可以看到很多代表部件的按鈕,它們以目錄形式被整理起來,可以用于開發(fā)。

htfy96
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

在左邊,我們看到了兩個不同的部分,資源/文件瀏覽器在上方,屬性編輯器在下方。

資源/文件瀏覽器讓我們?nèi)菀渍业轿覀兿胍ゾ庉嫷奈募蛘哔Y源。在頂部有一些tab里,我們可以改變他們的視圖。最重要的是工程tab和資源tab。

 

在工程樹中,我們可以發(fā)現(xiàn)所有隱含在程序中的文件。在資源樹中,我們可以發(fā)現(xiàn)圖片資源。

在屬性編輯器中的文件/資源導(dǎo)航器下方,我們將可以直接修改一些資源屬性。

我將會在稍后回來,(介紹)在窗口上工作。

無若
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

在右邊有能影響一些資源的按鈕欄。從上往下前四個決定了新的資源會在哪里被添加(是在指針處、在實有元件內(nèi)、實有元件后,還是在實有元件前)。之后我們有一個畫著叉的按鈕,它是用于刪除當(dāng)前元件的。在它下面的是顯示預(yù)覽按鈕。最下面的能打開一個包含有位置、大小選項的屬性面板。

 

添加一些東西

一開始的三個步驟,我要說的是它們是用于一個新工程的最基本步驟。

1. 從設(shè)計窗口下面的widget菜單選擇Layout選項卡。在這里我們能找到sizers。Sizes能幫助我們調(diào)整元件在窗口中的位置和大小。一旦有人改變了窗口大小,sizers就會相應(yīng)地改變元件大小和內(nèi)部元件的空間。

htfy96
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

從布局元素中選擇基本的wxBoxSizer。這個調(diào)節(jié)器可以以一條水平或者垂直方向組織元素。在wxBoxSizer的虛線內(nèi)點擊設(shè)計窗口的面板,點擊所需的元素,添加它們到窗口。

2. 現(xiàn)在我們可以開始把一些元素放入這里面,但是,在這之前,我們還要添加一些額外的東西。首先,在wxPanel上選擇標(biāo)準(zhǔn)的widget目錄tab,之后點擊內(nèi)部的小方塊去添加一個panel到這個地方。確定選擇了boxSizer,在左側(cè)資源樹中你可以立即看到sizer被添加到樹中,并且在圖形界面上,你選了它,在資源樹中也會被選擇,反之亦然。wxPanel不僅會添加一個不錯的背景,還會添加一些特性到窗口中。

無若
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

3. 現(xiàn)在我們來在Panel內(nèi)添加另一個wxBoxSizer。選中wxPanel后,在Layout選項卡內(nèi)單擊wxBoxSizer,再在框內(nèi)點擊一次。現(xiàn)在窗口應(yīng)該看起來像下面這樣:

這些步驟構(gòu)成了絕大多數(shù)程序的一個好的開始?,F(xiàn)在,讓我們加入一些交互性元素。

4. 一個Hello World程序必須要顯示Hello World文本,那么就讓我們加上它。在Standard選項卡選中wxStaticText然后在框內(nèi)單擊。這個步驟給窗口增加了一個文本標(biāo)簽。

如果你看一看左邊的資源屬性編輯器,你就能看到一份具有一些變量名和其對應(yīng)值的表格。

第一行是這個元素的標(biāo)簽,在所有元素中它都會顯示出一段文字,默認(rèn)是"Label"。點擊右邊一欄(值列),你就能編輯這些值。那么現(xiàn)在就讓我們動手,點擊Label右邊的一列,編輯文本,把它改成一些新穎獨特的詞語,比如"Hello World"(你知道的,如果以其它文本開始會帶來壞運氣)。

htfy96
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

5. 現(xiàn)在添加一些互動。我們將添加一個按鈕退出窗口。在標(biāo)準(zhǔn)tab上點擊wxButton按鈕。你將會看到我們設(shè)計的窗口變成了藍(lán)色,現(xiàn)在當(dāng)你將鼠標(biāo)指針移出Label時,我們在最后一步添加的那一側(cè)變成了淡藍(lán)色,這說明它的這一側(cè)有新資源被添加,因為wxStaticText內(nèi)部不能有任何元素,所以它會自動將其它元素添加到另一側(cè)。點擊右側(cè)添加按鈕。

 

進(jìn)入屬性編輯區(qū)去編輯按鈕的標(biāo)簽(label),類似于Static Text label,寫上引用文本。因為點擊按鈕將會關(guān)閉窗口,所以我在按鈕上標(biāo)注“Quit”。

無若
翻譯于 4個月前

0人頂

 翻譯的不錯哦!

6.你現(xiàn)在可以通過點擊 Build & Run按鈕,組建并運行程序。然后會出現(xiàn)一個小窗口,上面有Hello World文本和一些無效的按鈕。那么,就給按鈕加些功能吧。你可點擊菜單欄上的關(guān)閉按鈕或通過文件->退出來關(guān)閉窗口。

在設(shè)計器中雙擊我們添加的按鈕,進(jìn)入HelloWorldMain.cpp文件中(或你自己命名的主文件)。

你可能要滑動滾輪來找到這樣的一個函數(shù)

1
2
3
void HelloWorldFrame::OnButton1Click(wxCommandEvent& event)
{
}

該函數(shù)處理按鈕點擊事件,并在你點擊按鈕的時候調(diào)用。當(dāng)然,該函數(shù)現(xiàn)在還沒這個功能,我們來寫寫這個函數(shù),賦予它這些功能。在函數(shù)體下加上以下內(nèi)容

1
2
3
4
void HelloWorldFrame::OnButton1Click(wxCommandEvent& event)
{
    Close();
}

當(dāng)你重新編譯時,Close()函數(shù)關(guān)閉窗口,你可使用我們的按鈕關(guān)閉窗口。
以下是最終結(jié)果

徐繼開
翻譯于 5個月前

0人頂

 翻譯的不錯哦!

最后的一些注意事項

如果你選擇任何設(shè)計資源,它的屬性你都可以在屬性編輯框中看到它的尺寸(寬和高)和位置(X和Y)變量。你還可以設(shè)一個值給他們或者調(diào)整檢查默認(rèn)的尺寸和默認(rèn)的位置,這樣層管理器會選擇合適的位置和尺寸給任何的元素和窗口自身。對于我們將要開始做的項目來說,這是一個好選擇。

這是一個非常基本的教程。我的想法是做更多的教程去解釋另外一些特性。但是你還是要通過你自己去實驗,這里有許多資源可以使用。

任何建議,糾正,疑問或者評論都?xì)g迎。感謝您的閱讀。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何搭建MinGW、CodeBlock和wxWidgets環(huán)境
windows下的Code::Blocks + minGW + wxWidgets 開發(fā)環(huán)境搭建
在win10 vs 2015 上編譯運行bitcoin v0.1源碼 (上)
VC 6.0 下搭建 wxWidgets 開發(fā)環(huán)境 - VC - 開發(fā)語言 - 程序員之家
第1篇 Qt5基礎(chǔ)(一)Qt開發(fā)環(huán)境的搭建和hello world
[OpenCV]
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服