【wxWidgets 教程】安装、配置、HelloWorld篇(一)

这篇具有很好参考价值的文章主要介绍了【wxWidgets 教程】安装、配置、HelloWorld篇(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、下载 wxWidgets 源码

下载地址:https://github.com/wxWidgets/wxWidgets.git
这里,我下载了 wxWidgets 3.2.2.1,接下来便以这个版本为示例进行详细的安装介绍。

二、编译配置

在进行源码编译前,要确保已经安装了 CMake。CMake 的下载路径:https://cmake.org/download/
下面是一段简单的构建 wxWidgets 库的 CMake 脚本:

include(FetchContent)
FetchContent_Declare(
  wxWidgets
  GIT_REPOSITORY "https://github.com/wxWidgets/wxWidgets.git"
  GIT_TAG v3.2.2.1
)
FetchContent_MakeAvailable(wxWidgets)

它会从 GitHub 上把 wxWidgets 源码下载下来。执行 CMake 脚本,等待一段时间,可看到有以下输出:

-- Which libraries should wxWidgets use?
    wxUSE_STL:      OFF      (use C++ STL classes)
    wxUSE_REGEX:    builtin  (enable support for wxRegEx class)
    wxUSE_ZLIB:     builtin  (use zlib for LZW compression)
    wxUSE_EXPAT:    builtin  (use expat for XML parsing)
    wxUSE_LIBJPEG:  builtin  (use libjpeg (JPEG file format))
    wxUSE_LIBPNG:   builtin  (use libpng (PNG image format))
    wxUSE_LIBTIFF:  builtin  (use libtiff (TIFF file format))
    wxUSE_NANOSVG:  builtin  (use NanoSVG for rasterizing SVG)
    wxUSE_LIBLZMA:  OFF      (use liblzma for LZMA compression)

-- Configured wxWidgets 3.2.2 for Windows-10.0.22000
    Min OS Version required at runtime:                Windows Vista / Windows Server 2008 (x64 Edition)
    Which GUI toolkit should wxWidgets use?            msw  
    Should wxWidgets be compiled into single library?  OFF
    Should wxWidgets be linked as a shared library?    ON
    Should wxWidgets support Unicode?                  ON
    What wxWidgets compatibility level should be used? 3.0

这里专门对两个为 “OFF” 的选项进行解析:

  1. wxUSE_STL 是一个在 wxWidgets 库的C++代码中用于启用或禁用标准模板库 (STL) 的宏定义。它控制库中使用STL的部分,例如使用 std::string 替代 wxString。当 wxUSE_STL 被定义为 “ON” 时,表示启用 STL 支持,而当它被定义为 0 时,则表示禁用 STL 支持。设置 wxUSE_STL 的值将会影响 wxWidgets 库的构建和使用方式。启用 STL 支持将允许开发人员更容易地使用C++标准库中的一些数据结构和算法,从而简化代码的编写过程。禁用 STL 支持可以减少库的大小,并提高代码的性能,因为STL的实现可能会导致一些额外的开销。
  2. wxUSE_LIBLZMA 用于启用或禁用 wxWidgetsliblzma 库的支持。liblzma 是一个用于数据压缩和解压缩的库,支持多种压缩格式,包括 XZLZMA。当需要使用 wxWidgets 中与 liblzma 相关的功能时,例如通过 wxArchiveClass 类解压缩 XZ 格式的归档文件,需要确保 wxUSE_LIBLZMA 设置为 “ON”,并确保已安装liblzma 库及其头文件。

其他选项默认都是 builtin,即已内建到了 wxWidgets 中,我们可以不用管。

继续往下看,我们可以看到这段输出:

Which GUI toolkit should wxWidgets use?            msw  

这说明我目前所用的是 wxMSW 端口,它会自动识别我们的系统并作出选择。当然,如果我们想自己设置其他平台端口,可以设置 CMake 脚本的 wxBUILD_TOOLKIT 变量值,如果要知道当前系统上 wxWidgets 可用的GUI工具集,可查看 wxTOOLKIT_OPTIONS 的变量值,另外,wxPLATFORM 变量记录了当前的操作系统平台是什么。我这里 wxPLATFORM 的值为 WIN32

还有这句输出:

Should wxWidgets be compiled into single library?  OFF

默认情况下,wxWidgets 编译输出的是多个库文件,如果想编译成一个库文件,可更改选项 wxBUILD_MONOLITHIC 为 “ON”,然后重新构建 CMake 项目。

接下来,我们写一个最简单的 wxWidgets 项目。先写好 CMake 脚本。

cmake_minimum_required(VERSION 3.24)
project(wxWidget_test1)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY bin)

include(cmake/Find_wxWidget.cmake)
add_executable(wxWidget_test1 main.cpp)
target_link_libraries(wxWidget_test1 PRIVATE
                      # wxmono
                      wx::net wx::core wx::base)

# Windows下,在构建完成后,将依赖的动态链接库文件拷贝到可执行文件输出目录下
add_custom_command(TARGET wxWidget_test1
                   POST_BUILD COMMAND "${CMAKE_COMMAND}" -E
                   copy_if_different "$<TARGET_RUNTIME_DLLS:wxWidget_test1>" "$<TARGET_FILE_DIR:wxWidget_test1>"
                   VERBATIM COMMAND_EXPAND_LISTS)

# Windows下,需添加以下属性,否则编译时会出现main函数未定义的错误
set_target_properties(wxWidget_test1 PROPERTIES WIN32_EXECUTABLE ON)

上述脚本中,我把构建 wxWidgets 库的脚本指令放到了项目根目录的“cmake”目录的 Find_wxWidget.cmake 中(即本文开头的第一段 CMake 脚本)。
这个项目使用 wxWidgetswx::net wx::core wx::base 三个模块,当然这是把 wxWidgets 编译成多个库文件的情况下的使用方法。
如果编译成一个库文件(即 wxBUILD_MONOLITHICON)则应该在 target_link_libraries 中添加 wxmono(脚本中我把这行给注释了),且不能独立包含模块,此时的 target_link_libraries 应该写成:

target_link_libraries(wxWidget_test1 PRIVATE wxmono)

三、代码编写

#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

class MyFrame : public wxFrame
{
public:
    explicit MyFrame(const wxString &title)
      : wxFrame(nullptr, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
    {
        // 创建一个面板
        auto *panel = new wxPanel(this, wxID_ANY);

        // 创建一个按钮
        auto *button = new wxButton(panel, wxID_ANY, wxT("Click me!"),
                                    wxPoint(60, 40), wxSize(100, 30));

        // 绑定按钮点击事件
        button->Bind(wxEVT_BUTTON, &MyFrame::OnButtonClicked, this);
    }

private:
    void OnButtonClicked(wxCommandEvent &event)
    {
        wxUnusedVar(event);
        wxMessageBox(wxT("Hello, wxWidgets!"), wxT("Hello"), wxOK | wxICON_INFORMATION);
    }

wxDECLARE_EVENT_TABLE();
};

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_BUTTON(wxID_ANY, MyFrame::OnButtonClicked)
wxEND_EVENT_TABLE()

class MyApp : public wxApp
{
public:
    virtual bool OnInit()
    {
        auto *frame = new MyFrame(wxT("Hello wxWidgets!"));
        frame->Show(true);
        return true;
    }
};

wxIMPLEMENT_APP(MyApp); // NOLINT

代码解释:

  1. 首先,我们需要包含 wxWidgets 的头文件
  2. 接下来,我们需要创建一个 wxFrame 派生类来实现我们的主窗口。在 MyFrame 类中,我们需要创建主窗口的各种控件和布局,并处理它们的事件
  3. 我们需要创建一个 wxWidgets 应用程序类,该类派生自 wxApp 类。在此类中,我们需要实现 OnInit() 函数,该函数将在应用程序启动时被调用。在 OnInit() 函数中,我们需要创建主窗口
  4. 最后,使用 wxIMPLEMENT_APP 宏指定我们的应用程序类

编译后运行结果如下:
【wxWidgets 教程】安装、配置、HelloWorld篇(一)

至此,一个最基本的 wxWidgets 库的安装配置和使用方法介绍结束。

四、CMake说明

CMake 构建指令

cmake .

cmake 后面接的要是根 CMakeLists.txt 文件的路径,执行后将会把当前目录作为构建目录. 意味着根源码目录作为构建目录

CMake 编译指令

cmake --build .

注意,此时的 . 指的是构建目录所在路径,要与 CMake 构建时的指令区分开来。


【wxWidgets 教程】安装、配置、HelloWorld篇(一) 至此完毕,欢迎大家指正!还请大家点点赞,给我点动力~~

下一篇:【wxWidgets 教程】HelloWorld 程序详细介绍(二)文章来源地址https://www.toymoban.com/news/detail-436882.html

到了这里,关于【wxWidgets 教程】安装、配置、HelloWorld篇(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven的下载安装配置教程

    一、简单了解一下什么是Maven Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。 1.Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下基于Java开发的开源项目。 2.Maven项目对象模型(POM)是

    2024年02月22日
    浏览(32)
  • Tomcat 下载、安装与配置教程

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性

    2024年04月14日
    浏览(61)
  • Qt下载安装及配置教程

    进入qt中文网站:https://www.qt.io/zh-cn/ 下载开源版 往下滑,下载Qt在线安装程序 它已经检测出我的是windows系统,直接点击download就好。如果是其它的系统,需要找到对应自己系统的安装包。 然后跟网速有关,等一会就会自动下载 等待下载完成,双击.exe文件,就可以进行安装。

    2024年02月03日
    浏览(33)
  • Tomcat下载安装以及配置(详细教程)

    本文讲的是Java环境 提示:这里可以添加本文要记录的大概内容: 今天晚上查看自己原来项目的时候,突然发现运行不了,仔细查看发现是tomcat没配置,但是tomcat在电脑里已经下载过了,只是还没有配置,这篇文章就讲tomcat在电脑与idea中的配置 提示:以下是本篇文章正文内

    2024年02月03日
    浏览(31)
  • Eclipse下载安装配置详细图文教程

    对于Java开发的学习者以及在岗人员,主流的IDE(集成开发环境)就两个1.IDEA 2.Eclipse,这两款IDE都不错,不过IDEA目前要付费,而Eclipse可以免费使用。接下来我分享一下eclipse的下载安装以及配置。 下载的话最好肯定还是去官网下载: https://www.eclipse.org/downloads/packages/release 这里

    2024年02月05日
    浏览(36)
  • MySQL 5.7下载安装配置详细教程

    我这边安装的是MySQL 5.7.43 ,以下是详细下载安装配置教程 进入官方网站:https://www.mysql.com/ 首页滑到最下面,找到MySQL Community server 选择你想要的版本和电脑对应配置进行下载 下载完,解压到你想保存的目录 1.右键此电脑-属性—高级系统设置—环境变量—系统变量 2.新建系

    2024年02月09日
    浏览(52)
  • tomcat下载、安装、配置(新手教程墨迹版)

    链接:tomcat官网 1)进入tomcat官网单击左侧你想要的版本号,这里以 Tomcat 8.5 为例子进行安装讲解。 2)进入之后,在下方选择 64-bit Windows zip (pgp, sha512) 进行下载。 ps: 有的电脑可能不是 64 位而是 32 位电脑,我们需要 右键 单击 桌面 上的 此电脑 然后在下方 属性 进行 单击 查

    2024年02月14日
    浏览(27)
  • 下载安装npm,配置环境变量详细教程

    要在本地运行项目,就需要安装npm,其次还需要配置项目依赖node-modules。今天我们就先安装npm 在官网下载 http://nodejs.cn/download/ 选择windows或者Mac即可 可以看到版本号,说明成功了 然后验证是否能使用npm 出现这些信息,就证明成功了。 创建2个新的文件夹,用在存放全局包 分

    2024年01月21日
    浏览(64)
  • mac 下载、安装、配置mysql详细教程

    一、官网下载安装包 打开官网后,按下图选择: 拉到最下面选择社区版本: 选择 MySQL Community Server 版本: 下面一定要选择dmg格式文件: 选择不登陆,直接安装: 二、安装指南 双击dmg文件解压,然后双击pkg文件 点击允许: 继续: 继续: 一定要选择Use Legacy Password Encrypti

    2024年02月16日
    浏览(45)
  • Linux中maven下载、安装、配置详细教程

    1.下载地址: https://maven.apache.org/download.cgi 2.进入地址后,当前显示最新版本,下滑页面可以选择其他版本进行下载 1.打开Linux,选择需要存放的目录 2.上传刚刚下载好的安装包到Linux (这里选择可以上传本地文件到Linux的软件就行,本人使用的是 MobaXterm) 3.打开Linux终端 #进入

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包