1.wxWidgets的第一次使用
2.QtåwxWidgetsåªä¸ªå¥½
3.codelite的使用
4.å¦ä½ç¼è¯wxWidgets示ä¾ç¨åº
5.å¦ä½CodeBlocks+wxWidgets+MinGW+STLPort
wxWidgets的第一次使用
对于C++图形用户界面(GUI)开发的选择,Qt是一个主流选项,但其需要额外安装组件,可能带来一些不便。最近,我遇到了wxWidgets,赛车 源码一个跨平台的C++ GUI框架,决定体验一番。
本文的初衷是出于个人兴趣,内容可能不够专业,仅供参考。
简单来说,wxWidgets与Qt相似,它是一个用于构建界面的工具,支持Python版本,阿里源码mybatis比如著名的FileZilla界面就源于此框架。现在,我们开始它的安装和配置过程。
首先,访问wxWidgets官网下载源码编译包,我选择Windows版本并解压至D:\Programs\Cpp\wxWidgets-3.2.2.1目录,之后以wx目录代称。分合指标源码
在VS中打开wx目录下的build\msw\wx_vc.sln,针对位和位平台分别编译Debug和Release模式,总计四次,编译结果会存放在lib文件夹。
验证项目使用时,新建一个名为HelloWx的C++空项目。在项目属性中,制导源码调整配置为所有配置和所有平台,添加wxWidgets的include和lib路径,针对和位平台分别设置子系统、链接器路径和库目录。
在Main.cpp源文件中编写基础代码,运行后,如果能成功显示界面,jdk源码解说那么说明wxWidgets已成功集成到项目中。
QtåwxWidgetsåªä¸ªå¥½
wxWidgetsæ¯å¼æºç, qtä¸æ¯å¼æºç!
ä»è¿ä¸ªè§åº¦æè, å°±åwindows å linux å ³ç³», ä½ è§å¾windowsålinuxè°å¥½? 使ç¨windowsç人å¤,å¾å¤§çåå æ¯åä¸è¥éè¡ä¸ºå¯¼è´ç.
æç¨wxWidgetsæå¤å¹´äº,æ以ç»ä½ æè¿°ä¸ä¸å ³äºwxWidgets, å ¶ä»äººå°æåçä¸è¥¿.
wxWidgetså ¶å®é常ä¸é, æ¡é¢åºç¨å®å ¨è½å¤èä»»,æçé常é«,å å以åcpuå ç¨å¾å¯è§,å¨windowsä¸æ¢åMFCå¼åç软件æ¯,å¨mac osä¸æ¢åobject-cå¼åç软件æ¯!
èä¸å¹¶ä¸æ¯è¯´çé¢åæ§ä»¶çå¤è§å°±è¢«åºå®ä¸ºæä½ç³»ç»æ¬å°åçå¤è§, ä½ å®å ¨å¯ä»¥å°çé¢æè æ§ä»¶å ç´ åæä»»ææ ·å¼åå½¢ç¶,å®ç°ä¸åå¹³å°UIé£æ ¼çç»ä¸å,çè³å¯ä»¥å¶ä½å¤å¥ç®è¤,ç¶åå¨win7,xp,macä¸å¤è§åç¨æ·ä½éªä¸ä¸ªæ ·.
æ´ä¸»è¦çæ¯,ä»çæºä»£ç æ¯å®å ¨å¼æ¾ç. é«é¶è¿ç¨çæ¶åå®å ¨å¯ä»¥å°æ个æ§ä»¶ç±»ç»§æ¿ä¸æ¥, ç±äºä»æ²¡æprivateå±æ§,æ以ä»éé¢çå½æ°ååéä½ å ¨é½è½ç»§æ¿ä¸æ¥,ç¶åç §çæºä»£ç è¿è¡ä¿®æ¹åè°æ´,æååæèªå·±é对æ§çæ§ä»¶. åæ£, å¨UIä¸æ²¡ä»åä¸å°ç. å¦å¤,ä»ççé¢æ§ä»¶çç±»æ¯å®å ¨æéå®å ¨ç, ä½ é便new, ç¶åä¸ç¨ç®¡, ç¨å®äºä»èªå·±ä¼åæ¶,å®å ¨ä¸ç¨delete,å½ç¶ä¹å«delete,ä¸ç¶éº»ç¦äº.
å ¶ä»çåè½å ¶å®ä»é½ææä¾,æ¯å¦ç½ç»åº,容å¨,OpenGLçç, å¦æè§å¾ä¸çæ³,æ¯å¦æ°æ®åº,å¯ä»¥ç¨www.hnnedu.com xsqlite, 线ç¨ä»ä¹çå¯ä»¥ç¨stdç线ç¨æè boostç线ç¨,ç½ç»å¦æè§å¾ä»çäºä»¶æºå¶ååºæ ¢, å¯ä»¥ç¨boost::asio.
社åºä¸æ´»è·,ä½æ¯ä½ è¦æ¯å¨ä¸é¢æé®, 马ä¸å°±ä¼å¾å°ååº(å³ä¾¿æ¯ç¾å½çæ·±å¤), å¦ææ¯bug, ä¼æ人ç´æ¥èç³»åä½è ,é常快çå°±è¿è¡æ¹æ£,并é®å¯éç¥ä½ ,ç¶ååå°svnä¸è¿è¡æ´æ°.ä¸è¿ä¸»è¦æ¯è±è¯çååºå¿«, ä¸æçå ä¹æ²¡äººæç.
bugæ¯åå¨ç, æ¯è¾å·çåè½åè¿ç¨å¯è½ä¼æbug, å¯ä»¥ç»å®æ¹æ交,ä¸è¬ä¸å¤©å·¦å³å°±å¯ä»¥å¾å°ååº, å¦æä¸æ¿æ, åæ£ææºä»£ç , è·è¸ªä¸ä¸, 继æ¿ä¸æ¥æ¹æ¹å°±å¯ä»¥äº,wxWidgetsæ¯å¼æºç, èä¸éé¢çå½æ°ååéåªç¨publicåprotected,没æç¨private, æ¢å¥è¯è¯´, å°±æ¯æºä»£ç ä¸çææå½æ°ååéé½æ¯å¯ä»¥è·åå使ç¨ç. ä¸è¿,ä¸è¬çè¿ç¨æ¯å¾é¾ç¢°å°bugç. è°æ¢è¯´qt没æbug? éå°qtçbugä½ æ¾ä», ä½ æ¯ä»è´¹ç¨æ·å?
ä¸è¿, 移å¨è¿ç¨ç¡®å®æ¯ä»ççæ¿.
codelite的使用
在编程世界中,Codelite是一个功能丰富的集成开发环境,它被广泛用于构建多种应用程序,包括使用wxWidgets库的项目。以下是关于如何使用Codelite进行wxWidgets项目构建和开发的详细步骤。
首先,您需要从官方源下载并构建wxWidgets库。请注意,直接从源代码构建wxWidgets是一个较为复杂的过程,通常建议使用预编译的版本。但如果你选择从源代码构建,你将需要在指定目录下使用`cmake`工具来生成构建文件。
接着,您需要安装Codelite。通过终端执行以下命令进行安装:
apt-get update
apt-get install vim g++ codelite cmake
安装完成后,您可以直接在Codelite中打开已有项目。在不需要提升用户权限的情况下,通过创建一个自定义脚本来生成对应的workspace文件。
创建一个名为`build.sh`的脚本文件,并输入以下内容:
#!/bin/sh
cmake -G "CodeLite - Unix Makefiles" DCMAKE_BUILD_TYPE=Debug
chmod +x build.sh
./build.sh
执行此脚本将生成对应的工作空间文件`####.workspace`。在Codelite中打开此文件即可加载您的项目。
在加载项目后,您可以使用Codelite的内置构建和运行功能来执行您的程序。Codelite提供了多种构建系统支持,因此您可以在不同平台上构建和调试您的应用。
å¦ä½ç¼è¯wxWidgets示ä¾ç¨åº
wxWidgets
wxWidgetsæ¯ä¸ä¸ªç¨åºå¼åæ¡æ¶/åºï¼ å è®¸ä½ å¨WindowsãMacãLinuxä¸ä½¿ç¨ç¸åç代ç 跨平å°å¼åãå®ä¸»è¦ç¨C++åæï¼ä½ä¹å¯ä»¥ä¸å ¶ä»è¯è¨ç»å®æ¯å¦PythonãPerlãRubyã
æ¬æç¨ä¸æå°åä½ å±ç¤ºå¦ä½å¨åºäºDebiançlinuxä¸å¦UbuntuåLinux Mintä¸ç¼è¯wxwidgets 3.0+ã
ä»æºç ç¼è¯wxWidgets并ä¸å°é¾ï¼ä» ä» éè¦å åéãåºå¯ä»¥æä¸åçæ¹å¼æ¥ç¼è¯ï¼æ¯å¦éææè å¨æåºã
1. ä¸è½½ wxWidgets
第ä¸æ¥ä½ éè¦ä»wxwidgets.orgä¸è½½wxWidgetsæºç æ件ã
åå®åï¼è§£åå°ç®å½ã
2. 设置ç¼è¯ç¯å¢
è¦ç¼è¯wxwidgetsï¼æ们éè¦ä¸äºå·¥å ·å æ¬C++ç¼è¯å¨ï¼å¨Linuxä¸æ¯g++ãææè¿äºå¯ä»¥éè¿apt-getå·¥å ·ä»ä»åºä¸å®è£ ã
æ们è¿éè¦wxWidgetsä¾èµçGTKå¼ååºã
$ sudo apt-get install libgtk-3-dev build-essential checkinstall
è¿ä¸ªå«åcheckinstallçå·¥å ·å 许æ们为wxwidgetså建ä¸ä¸ªå®è£ å ï¼è¿æ ·ä¹åå°±å¯ä»¥è½»æ¾ç使ç¨å 管çå¨æ¥å¸è½½ã
3. ç¼è¯ wxWidgets
è¿å ¥å°wxWidgets解ååçç®å½ã为äºä¿ææ¸ æ´ï¼å建ä¸ä¸ªç¼è¯ç¨çç®å½ã
$ mkdir gtk-build
$ cd gtk-build/
ç°å¨è¿è¡configureåmakeå½ä»¤ãæ¯ä¸ªå°è±è´¹ä¸äºæ¶é´æ¥å®æã
$ ../configure --disable-shared --enable-unicode
$ make
"--disable-shared"é项å°ä¼ç¼è¯éæåºèä¸æ¯å¨æåºã
makeå½ä»¤å®æåï¼ç¼è¯å°±æåäºãæ¯æ¶åå®è£ wxWidgetså°æ£ç¡®çç®å½ã
æ´å¤ä¿¡æ¯è¯·åèinstall.txtåreadme.txtï¼è¿å¯å¨wxwidgetsä¸ç/docs/gtk/ç®å½ä¸æ¾å°ã
4. å®è£ checkinstall
ç°å¨æ们ä¸ä½¿ç¨"make install"å½ä»¤ï¼æ们使ç¨checkinstallå½ä»¤æ¥å建ä¸ä¸ªwxwidgetsçdebå®è£ å ãè¿è¡å½ä»¤ï¼
$ sudo checkinstall
checkinstallä¼è¯¢é®å 个é®é¢ï¼è¯·ä¿è¯å¨æé®åæä¾ä¸ä¸ªçæ¬å·ï¼å¦åå°ä¼å¤±è´¥ã
å®æè¿ä¸ååï¼wxWidgetså°±å®è£ 好äºï¼debæ件ä¹ä¼å建å¨ç¸åçç®å½ä¸ã
5. 追踪å®è£ çæ件
å¦æä½ æ³è¦æ£æ¥æ件å®è£ çä½ç½®ï¼ä½¿ç¨dpkgå½ä»¤åé¢è·ä¸checkinstallæä¾çå åã
$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a
6. ç¼è¯ç¤ºä¾
ç¼è¯wxWidgetså®æåå°±å¯ä»¥é©¬ä¸ç¼è¯ç¤ºä¾ç¨åºäºãå¨ç¸åçç®å½ä¸ï¼ä¸ä¸ªæ°çsampleç®å½å·²ç»å建äºã
è¿å ¥å®å¹¶è¿è¡ä¸é¢çå½ä»¤
$ compile samples
$ cd samples/
$ make
makeå½ä»¤å®æåï¼è¿å ¥sample åç®å½ï¼è¿éå°±æä¸ä¸ªå¯ä»¥é©¬ä¸è¿è¡çDemoç¨åºäºã
7. ç¼è¯ä½ ç第ä¸ä¸ªç¨åº
ä½ å®æç¼è¯demoç¨åºåï¼å¯ä»¥åä½ èªå·±çç¨åºæ¥ç¼è¯äºãè¿ä¸ªä¹å¾ç®åã
åè®¾ä½ ç¨çæ¯C++ï¼è¿æ ·çè¯ä½ è¿å¯ä»¥ä½¿ç¨ç¼è¾å¨çé«äº®ç¹æ§ãæ¯å¦geditãkateãkwriteççãæè ç¨å ¨åè½çIDEåGeanyãCodeliteãCodeblocksççã
ç¶èä½ ç第ä¸ä¸ªç¨åºåªéè¦ç¨ä¸ä¸ªææ¬ç¼è¾å¨æ¥å¿«éå®æã
å¦ä¸ï¼
#includewx.h>
classSimple:public wxFrame
{
public:
Simple(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(,))
{
Centre();
}
};
classMyApp:public wxApp
{
public:
boolOnInit()
{
Simple*simple =newSimple(wxT("Simple"));
simple->Show(true);
returntrue;
}
};
wxIMPLEMENT_APP(MyApp);
ç°å¨ä¿å并ç¨ä¸é¢çå½ä»¤ç¼è¯ã
# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std`-o program
# run
$ ./program
å¦ä½CodeBlocks+wxWidgets+MinGW+STLPort
æè¿å¨åCodeBlocks+wxWidgets+MinGWçå¼åï¼ç¼è¯æ¶æ示wcoutåºéï¼å¨ç½ä¸æç´¢äºä¸ä¸ªï¼åç°è¿æ¯MinGWçä¸ä¸ªlimitationï¼ä¸æ¯æunicodeãç½ä¸æä¾ç解å³åæ³æ¯ç¨STLPortæ¿ä»£MinGWçSTLåºãæç §ç½ä¸æä¾çæ¥éª¤ï¼ä»SourceForgeä¸è½½æºä»£ç ï¼ç¼è¯ï¼åºéãç»è¿åæï¼åç°ç½ä¸å¾å¤æç« é½ç¼ºå°äºä¸äºéè¦çæ¥éª¤ï¼å®è£ MSYSãä¸é¢æ¯æçç¼è¯è¿ç¨ï¼
1. ä¸è½½STLPortæºä»£ç ï¼/projects/stlport/ãåå®è§£åç®å½ä¸ºC:/STLPort
2. ä¸è½½å¹¶å®è£ CodeBlocksåMinGWæ带MinGWçCodeBlocksï¼åå®MinGWå®è£ è·¯å¾ä¸ºC:/CodeBlocks/MinGWãä¸è¦å¿è®°æC:/CodeBlocks/MinGW/binå å°Pathç¯å¢åéé
3. ä¸è½½å¹¶å®è£ MSYSï¼http://www.mingw.org/wiki/msys 并设置MinGWçå®è£ è·¯å¾ï¼è¿ç¯æç« è®²å¾å¾æ¸ æ¥ï¼
4. æå¼MSYS Shellç¯å¢ï¼cdå°/c/STLPort/build/lib(å¨MSYSéï¼WindowsçC:ä¸è¬æ å°å°/c)ï¼æ§è¡mingw-make -fgcc.mak clean all install
5. mkdir C:/STLPort/lib
6. å¤å¶C:/STLport/build/lib/obj/gccä¸é¢3个æ件夹éç*.aå*.allå°C:/STLPort/libãåæ¶æ3个dllå¤å¶å°C:/Windows/system
7. ä¸é¢æ¯é ç½®CodeBlocksçæ¥éª¤ï¼
ï¼1ï¼æå¼CodeBlocksèåSettings->Compiler and Debugger->Global Compiler Setting->GCC
ï¼2ï¼æ£æ¥å¹¶æ´æ°Toolchain executablesä¸çMinGWå®è£ è·¯å¾ï¼å¦æä½ ç¨çä¸æ¯CodeBlocksèªå¸¦çMinGW)
ï¼3ï¼å¨Compiler setting->Other optionsä¸æ·»å -mthreads
ï¼4ï¼å¨Linker settingä¸æC:/STLPort/libéç3个*.aæ件å å ¥link librarieséï¼æ³¨æå»å¹´æ件ååé¢çâlibâååé¢çâ.aâ
ï¼5ï¼å¨Search directories->Compileréå å ¥C:/STLPort/stlport
ï¼6ï¼å¨Search directories->Linkeréå å ¥C:/STLPort/lib