您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> 移动技术 >> Symbian开发 >> 正文
  [图文]详解 Ubuntu 10.10下Qt与wxWidgets编译         ★★★ 【字体:
详解 Ubuntu 10.10下Qt与wxWidgets编译
作者:互联网    文章来源:互联网    点击数:    更新时间:2011-7-2    

Ubuntu 10.10下QtwxWidgets 编译十本文介绍的内容,不多说,下来看内容。近期由于项目需要,要调研GUI库,经查阅资料,发现相对比较出色的就是QtwxWidgets这两个了,因此这里选择对二者安装试用。源码安装的技巧和习惯可以参考我的文章Linux下源码安装的经验总结。

Qt的安装比较方便,在官方网站上下载Qt Creator2.1.0(有.bin格式的二进制安装包)和Qt-everywhere-opensource-src-4.7.3的源码包,对于IDE,可以直接./*.bin,就会弹出安装窗体,和Windows一样安装即可。完成后解压缩源码包tar vxf *.tar.gz即可,接下来输入./configure,程序开始检查安装环境,如果提示缺少g++,请参见我的另一篇文章Ubuntu10.10下安装gcc-4.5.3。

然后又会提示libX11未找到,这个比较麻烦,要装蛮久的,在这里列出需要的东西,libX11-6.2.1、libXau-1.0.6、libXext-1.0.4、libXrender-0.9.4、libXtrans-0.1、renderproto-0.9.3、xextensions-1.0.1、xextproto-7.0.3、xproto-7.0.13以及xtrans-1.2.6,这些东西都可以在http://freedesktop.org/Software/xlibs这个网站上下载到,值得一提的是,在GTK+的安装过程中,虽然已安装libX11但仍提示libX11 not found的解决办法就是安装libXext,这个问题在安装gtk时困扰了我好久,贴出来作为前车之鉴。

安装X11的过程中,libX11的make时会出现一个错误提示XK_Ocaron或者是XK_Ccedillaabovedot等未定义,根据错误提示查看src下的KeyBond.c文件,出错部分代码如下:

  1. view plaincopy to clipboardprint?
  2. case 0x16: /* Caucasus, Inupiak, Guarani */
  3. if (sym == XK_ocaron || sym == XK_Ocaron) {
  4. *upper = XK_Ocaron;
  5. *lower = XK_ocaron;
  6. }
  7. else if (sym >= XK_Ccedillaabovedot && sym <= XK_Obarred)
  8. *lower += (XK_ccedillaabovedot - XK_Ccedillaabovedot);
  9. else if (sym >= XK_ccedillaabovedot && sym <= XK_obarred)
  10. *upper -= (XK_ccedillaabovedot - XK_Ccedillaabovedot);
  11. else if (sym == XK_schwa || sym == XK_SCHWA) {
  12. *lower = XK_schwa;
  13. *upper = XK_SCHWA;
  14. }
  15. else if (sym == XK_lbelowdot || sym == XK_Lbelowdot) {
  16. *lower = XK_lbelowdot;
  17. *upper = XK_Lbelowdot;
  18. }
  19. else if (sym == XK_lstrokebelowdot || sym == XK_Lstrokebelowdot) {
  20. *lower = XK_lstrokebelowdot;
  21. *upper = XK_Lstrokebelowdot;
  22. }
  23. else if (sym == XK_gtilde || sym == XK_Gtilde) {
  24. *lower = XK_gtilde;
  25. *upper = XK_Gtilde;
  26. }
  27. break;
  28. case 0x16: /* Caucasus, Inupiak, Guarani */
  29. if (sym == XK_ocaron || sym == XK_Ocaron) {
  30. *upper = XK_Ocaron;
  31. *lower = XK_ocaron;
  32. }
  33. else if (sym >= XK_Ccedillaabovedot && sym <= XK_Obarred)
  34. *lower += (XK_ccedillaabovedot - XK_Ccedillaabovedot);
  35. else if (sym >= XK_ccedillaabovedot && sym <= XK_obarred)
  36. *upper -= (XK_ccedillaabovedot - XK_Ccedillaabovedot);
  37. else if (sym == XK_schwa || sym == XK_SCHWA) {
  38. *lower = XK_schwa;
  39. *upper = XK_SCHWA;
  40. }
  41. else if (sym == XK_lbelowdot || sym == XK_Lbelowdot) {
  42. *lower = XK_lbelowdot;
  43. *upper = XK_Lbelowdot;
  44. }
  45. else if (sym == XK_lstrokebelowdot || sym == XK_Lstrokebelowdot) {
  46. *lower = XK_lstrokebelowdot;
  47. *upper = XK_Lstrokebelowdot;
  48. }
  49. else if (sym == XK_gtilde || sym == XK_Gtilde) {
  50. *lower = XK_gtilde;
  51. *upper = XK_Gtilde;
  52. }
  53. break;

对于这个不知道什么语言的键盘说明,可以直接将case下代码全部/**/忽略掉,只留下个break,不会影响功能,修改后再编译就可以成功了。另外,建议将这些库文件全部安装在/usr/X11R6目录下,方便统一管理,统一使用,可以减少不少麻烦。

X11安装完后,还会提示Cairo无法找到,诶,只好接着找咯!下载后安装,如果有缺失提示就装上,比较简单,略过。全部安装后,就可以正确的configure了,接下来的编译过程需要3个小时左右,要做好心理准备。安装完成后,在Qt Creator中设置qmake路径,具体方法如图:

Ubuntu 10.10下 Qt 与 wxWidgets 编译

然后就可以编写个小程序试试啦,界面不错,比较简洁。计划过段时间放出QtwxWidgets的对比评测,到时再详细截图。

有了Qt所依赖的这些库,wxWidgets的安装就不要什么东西了,在configure时加选项--with-x11就可以了。不过wxX11的成熟度还不够,在我的虚拟机上编译都是可以的,但是运行时居然没有合适的显卡驱动,界面是惨不忍睹啊!!运行dialog例程时,还有错误如下:

  1. X Error of failed request: BadWindow (invalid Window parameter)
  2. Major opcode of failed request: 10 (X_UnmapWindow)
  3. Resource id in failed request: 0x0
  4. Serial number of failed request: 388
  5. Current serial number in output stream: 389

经过查阅资料,也是由于显卡驱动没装的缘故。其实我是挺倾向于wxWidgets的,但是这样的不成熟,我怎么用啊!相对来说,wxgtk则成熟了不少,不过gtk+的安装太麻烦了,我装了快两个星期了,现在卡在gtk在configure时提示checking for XOpenDisplay... no libX11,快崩溃了,谁有解决的经验望能指点一二,不胜感激。

附上Windows下使用wxWidgets的简要使用说明:

安装wxWidgets源码包后要先编译,打开vs2008命令行到wxWidgets-2.9.1\build\msw下,输入

  1. nmake /f makefile.vc BUILD=debug SHARED=1 MONOLITHIC=0 UNICODE=1

以及

  1. nmake /f makefile.vc BUILD=release SHARED=1 MONOLITHIC=0 UNICODE=1

其中,BUILD选项配置编译类型,debug或release模式;SHARED为配置生成库的类型,0为静态库,1为动态库;MONOLITHIC选项配置构建单一库1还是多个组件库0,使用单一构建,项目的设置和开发会更加简单,同时使用DLL构建的话,只需分发一个DLL文件,如果使用非单一构建(multilib),会构建出多个不同的库,这样可以避免将整个wxWidgets的基本代码链接到主程序,就可以去掉不需要的库;UNICODE的编码方式。

编译后会出100多M涨到近2G。

再用Code::Block创建wxWidgets工程,会提示选择主目录,但是貌似CB自动选择的include和library路径都错了,进入后修改,右键"Build options",第一页#defines下加__WXMSW__(linux下加__UNIX__),第二页Link libraries下去掉wxmsw29u,添加wxmsw29ud_core.lib、wxbase29ud.lib、wxtiffd.lib、wxjpegd.lib、wxpngd.lib、wxzlibd.lib、wxregexud.lib、wxexpatd.lib。第三页将三项都改成应该指向的目录,这样配置就可以轻松的在Windows下使用wxWidgets了,界面也蛮不错的,就是缺点华丽,没Qt好看。

本文来自:http://blog.csdn.net/JuanA1/archive/2011/05/25/6446175.aspx

小结:关于详解 Ubuntu 10.10下QtwxWidgets 编译的内容介绍完了,希望本文对你有所帮助!

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    QT平台上模拟鼠标事件案例
    QT安装Mysql数据库插件实例操…
    Qt数据库连接操作和查询教程
    详解QT线程 串口接收程序
    解析Ubuntu 10.10 安装QT Ee…
    详解在Ubuntu Linux下独立编…
    详解Qt4访问Sqlite数据库
    Qt事件处理机制(上篇)
    Qt事件处理机制(下篇)
    Qt智能指针使用指南 帮助篇
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号