WxWidgets

来自何亚红个人资料库
跳到导航 跳到搜索

说明

本人使用此Gui库制作一些小工具,列表如下:

此GUI库的特点如下:

  • 免费开源。
  • 静态编译很方便。

常用辅助工具

虽然wxWidgets支持直接使用代码写UI(充分利用各种layout),本人还是习惯使用各种辅助工具设计UI。

wxSmith

wxSmith作为codeblocks的一部分(插件),必须使用codeblocks一步一步建立工程。

wxFormBuilder

wxFromBuilder直接生成窗口程序的头文件及C++源代码,只需要实现对应的虚函数即可。

源代码:https://github.com/wxFormBuilder/wxFormBuilder.git

编程注意事项

多线程

不能使用主线程与定时器以外的线程操作界面,否则在某些情况下会出错。如在Linux下会提示需要启用X的多线程支持,否则直接退出。

本人的解决方法如下:

  • 通过C++的Lambda表达式将所有的UI操作传递到定时器操作,定时刷新UI。

退出时内存泄漏

在主窗口退出时,最好在其析构函数关闭创建的窗口及其他资源。内存泄漏通常不会引起程序逻辑问题(操作系统会清理内存),但在某些时候可能会引起操作系统的某些操作。例如:Linux会在终端上显示较多错误信息。

编译环境搭建

本人主要使用Windows与Linux(Ubuntu)。

Linux

对于Linux,本人主要使用Ubuntu 20.04及更新版本,使用以下指令即可安装好编译环境:

#安装相应工具及库
sudo apt-get install build-essential make cmake pkg-config  libwxgtk3.0-gtk3-dev libwxgtk-media3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev  ninja-build

其他Linux发行版可参考ubuntu安装该发行版支持的对应软件包,主要需要的软件如下:

  • gcc: 编译器(注意:需要将g++也安装上)。
  • cmake: 跨平台的编译工具。
  • make: 编译基于Makefile的文件。
  • ninja: 构建系统,可充分利用cpu资源。
  • pkg-config : 用于管理库文件。

Windows

对于Windows,本人主要使用Windows 10+且使用MSVC及Mingw作为开发环境,且一般采用静态链接。

MSVC

在Visual Studio Installer中勾选上C++开发,并且安装好Windows SDK与CMake即可。

wxWidgets可使用CMake从源代码编译安装。由于一般编译器版本及编译设置(调试与否及多线程设置等)不同的库不可通用,故最好每次都从源码编译且使用同一个VS工具命令提示符。

Mingw

本人使用Mingw,通常使用MSYS2 。下列是mingw32环境的安装:

pacman -S ${MINGW_PACKAGE_PREFIX}-cmake ${MINGW_PACKAGE_PREFIX}-ninja ${MINGW_PACKAGE_PREFIX}-make ${MINGW_PACKAGE_PREFIX}-pkgconf ${MINGW_PACKAGE_PREFIX}-toolchain ${MINGW_PACKAGE_PREFIX}-wxWidgets

通常采用mingw32编译即可,通常情况下32位与64位通用。如需使用其它环境(不包括msys,可使用如mingw64,ucrt,clang32,clang64环境),请在其它环境执行环境安装命令。

官网

https://www.wxwidgets.org/