问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用wxWidgets做出好看的界面

发布网友 发布时间:2023-10-02 02:41

我来回答

1个回答

热心网友 时间:2024-12-02 12:52

下载最新版的源码,wxWidgets-3.0.2。wxWidgets在liunx是通过wxGTK实现的。wxGTK和wxWidgets的源码打包在一起。wxGTK依赖GTK+,当前版本依赖高于2.8.2的版本。我安装了3.0版本的GTK+。apt-get install gtk+-3.0-dev。一般开发用的库,都有个-dev结尾,这是个约定。开发用的库包含了头文件和文档之类的东西。

为了让不同平台wxWidgets编译之后放到各自的文件夹下,先在解压得到的文件夹下创建一目录。
mkdir gtk-build,release编译。mkdir gtkd-build,debug编译。

进入gtkd-build。执行下面的配置指令。

../configure --with-gtk=3 --enable-unicode --disable-shared --enable-debug

执行过程中会检查编译环境是否符合要求。就是各种编译软件,各种依赖库是否都具备。检查的过程中有提示,失败了的地方就说明确依赖软件。直接apt-get安装就好了。当配置成功之后,执行一下make指令。就能完成编译。

../configure 的各种参数doc文件夹下的install.txt都有说明。编译时根据需求打开和关闭一些功能将会省不是事情。

因为系统中已经安装了wxWidgets,所以不能make install,如果编译成动态版本的会导致冲突。

编写第一个程序

使用codeblocks按照向导很容易就创建了wxWidgets工程。记住,设计器选择wxSmith。这个和codeblocks是集成的。我选择的是dialogbased的应用程序。
然后开始编辑工程得编译选项。
这个是最绕脑的。花我的时间最长。不熟悉linux图形界面程序开发的基础概念
,熟的人也不多,网络上也缺少参考资料。连英文的资料都少,更何况中文的。

首先把wxWidgets的依赖添加到 Linker settings->link libraries。分别是libwx_gtk3u_core-3.0.a、libwx_baseu-3.0.a、libwx_baseu_net-3.0.a、libwx_baseu_xml-3.0.a。因为默认的程序用的都是基本的界面空间,就这几个就可以了。

解决编译错误

编译,操,一大堆错误。让人望而却步,windows这样一搞就直接编译通过了。因为windows没有这样的依赖关系wxWidgets->wxGTK+->GTK+->GTK->X11。

第一个错误,No Target! You should use wx-config program for compilation flags!。网上一搜,就一个结果。上面的方法根本就不解决问题。双击这个错误行,发现是代码通过预处理指令抛出来的。看看代码上下文,原来世需要定义一个常量,表示wxWidgets下层依赖的是什么。那就加上 __WXGTK__和__WXGTK3__;再编译,这个错误没有了。其他的都是各种找不到的错误。就是还需要添加依赖。

首先是GTK+3.0。在其他选项上再加上"pkg-config --libs gtk+-3.0",我操不行。搜啊搜啊,发现有人提到,gcc输入库的顺序要按依赖顺序排。查看编译时的命令行参数,"pkg-config --libs gtk+-3.0"执行出来的结果放在wxWidgets和wxGTK前面。没办法之后再控制台执行一下pkg-config --libs gtk+-3.0。把得到结果一个个手动添加到依赖。

然后是X11,X11幸好只要这一个项目。直接添加到依赖。再编译还有错误,undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5'。这个在pthread里面,把libpthread添加到依赖。这些东西apt-get install build-essential的时候都有了,只要知道了名字,直接加入依赖就可以了。X11是linux下x windows环境图形界面程序都需要依赖的东西,要是用directfb就不用X11了。

接下来是各种编解码图像的找不到,先到wxWidgets下面找找有没有,有的话就加进去。没有的话就是用系统提供的。

还有undefined reference to symbol 'deflate'。上网搜这是zlib压缩和解压缩库里的东西。把libz加进入到依赖。

undefined reference to symbol 'dlclose@@GLIBC_2.2.5'。这玩意是加载动态连接库的dl库找不到。把dl加入到依赖。

最后就是这三个。
undefined reference to `SmcOpenConnection'
undefined reference to `SmcVendor'
undefined reference to `SmcCloseConnection'

到网上搜索,一个结果都没有。没办法直接看源码。看看从那个头文件导入的这些东西。然后是用头文件名和头文件给出的信息搜索一下。发现这个东西是X11用来管理会话的库中的。最后找到这个库的名字叫SM,加入依赖。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
减罪的读音减罪的读音是什么 减的拼音? 减的反义词 5种开红色花朵的植物有哪些 怎么查衣服是什么牌子 ...一件连衣裙就要1080元 ,你怎么看?_百度知 ... ...的衣服比较难?这些时尚的淘宝店铺你知道吗?_百度知 ... 比尔布莱森被人们称为什么 三星空气净化器怎么样 ? 三星ax7000空气净化器 钢琴中国音乐家协会10级考试,需要考乐理么?具体怎么考法?1 从1号地铁传媒大学站怎么到朝阳 区八里庄北里203 楼 如果要考上海音乐学院钢琴业余十级,乐理要多少级? 我要考钢琴十级,乐理要考什么?是不是很难啊?要过关可以错几个...12 wxWidgets开发的程序怎么运行在嵌入式linux平台下 医院怎么测试排卵?有没有更科学一点的方法呢?平时注意什么呢?_百度... 钢琴业余十级还要不要考乐理了1 linux wxwidgets 有图形界面吗 丢失零食怎么找回 wxwidgets在linux上的使用 听到悠长的声音就会恐惧、心慌,比如敲煤气罐的声音,寺庙里撞大钟的钟声... 丢失怎么找回原来1 丢失如何找回?3 本溪水洞门票需要提前预定吗? 一个能在两部手机同时登录吗? 周公解梦梦到丢失的狗狗了12 ...叫姐姐又感觉不合适,,也不想这么叫 该怎么称呼人家 怎么样才能知道有没有排卵?方法是什么呢?饮食有什么诀窍吗? 大唐游仙记怎么快速升级 怎样才能知道有没有排卵?有哪些办法比较好呢?平时多吃些什么? 请问这个鞋在长春哪里有卖的啊? ...一般喷绘印刷类的户外大型广告制作的材质都有哪些?可以一次成像的最... 脊椎压痛叩击痛不常见于 带有一的成语有什么262 往的成语有哪些1 有往什么的成语2 老母鸡怎么炖 肉质鲜嫩有妙招1 什么成语里面有往 母鸡炖蛇汤怎么做133 怎么炖的鸡味道很鲜? 老母鸡怎么炖好吃414 鸡汤要怎么炖才会既鲜美又营养呢?13 业余钢琴考级乐理考试1 叫妹妹太小了,叫阿姨又太老了,叫爸爸性别又不对,你仔细想想,你应该叫... 河北金融学院的冷门专业有哪些 ...的姐姐要向她咨询,要怎么称呼她,见到老一点的要叫叔叔吗 ...每月各种扣款1700元,为什么我只得到五千七? 一个可以在两部手机同时登陆吗? 炖鸡的方法,怎样炖鸡味鲜, 为什么实况王者集结中普罗米修斯的抽取抽传奇球员的概率那么低