使用QT做跨平台编程

原创 2011年01月10日 21:28:00

前两周,各种课程设计和实验,各种团队活动占据了我几乎所有的时间,睡觉都没啥时间,更不用说写博客了。

 

今天下午刚刚投出高频课设的PCB,暂时得以清闲,赶紧来写写博客,待我整理完微机原理的课设,后面的课设和实验也该总结了~~

 

QT,是我最近一直在使用的编程框架,非常便捷和强大~不但封装了各种复杂的系统操作,而且非常容易实现跨平台的C++编程。

 

QT的程序,一般来说,只要不是跟系统直接相关的程序,都能极为顺利的实现跨平台,但是事情总有些不顺的地方,偶尔,切换平台以后,它会DT的出现各种错误,这其实是我还不甚了解QT造成的,下面,我还是基于之前的微机原理课设,说说QT中这么几种阻碍跨平台的情况。

 

QT工程的跨平台问题

在Windows下全部编译通过后,移植到Linux下(感谢葆光的帮助),发现出现了文件未找到的错误,经检查,发现是lib文件的问题。

 

 

lib文件是编译过程中生成的中间文件,在Windows下的格式是“xxx.lib”,而我在pro文件中指定lib文件时使用的如下方式:

LIBS    += dian_matrix_libd.lib

后来发现,这样的写法是非常不具有跨平台特性的。可以说是硬编码,因为Linux平台下的lib文件是xxx.o的形式,这样看来,直接指定名称及后缀是非常不可取的。

 

避免方法:使用如下形式:

LIBS    += -ldian_matrix_libd

QT是个跨平台框架,自然会提供全套的跨平台服务,-l前缀是QT工程文件中表征lib文件的标记,加上这个前缀,QT工具会自动寻找对应lib文件,完成跨平台的任务。

 

针对这个问题,我想,在使用一个工具时,应该了解它的设计宗旨,如果某个功能在它的宗旨之内,而这个工具又是一个优秀工具的话,它一定会以某种形式提供这个功能。

 

编码的跨平台问题

在Linux系统下编译完成后,发现运行结果异常,表现为汉字显示的乱码,大致如下图所示:

之前在Windows平台下其实也遇到过类似问题,通过VS调试后发现是编码错误,因为HZK16文件是基于ascii码编制的字库文件,使用如下方式获取文件的偏移量:

 

然后使用随机读取的方式获取文字点阵信息。

 

这种方法严重依赖字符的编码方式,只能使用ascii编码才能正确访问,wstring使用 unicode编码,ubuntu下使用utf-8编码,造成了显示乱码的现象。

 

解决方案:

使用QT库提供的QTextCodec类完成各类编码的转换工作,使其统一转换成“GB18030”编码方式,就可以正常的访问汉字字模信息了。

住:此部分两张图片为Windows下的截图,只为更清晰的说明,不是证明。

 

---------------------------------------其他跨平台问题---------------------------------------------

文件路径问题

在Linux下运行编译结果时,发现找不到HZK16文件,但是明明已经放在目录下了。经分析,最终确定是文件路径的分隔符“/”和“/”的问题。

使用QDir::toNativeSeparators函数可以解决此问题。

 

注:这个问题是经常出现的,非常让人烦恼,最近的编程中,发现QT含有QDir, QFile, QFileInfo 等多种类支持很多的文件操作,几乎将所有的文件操作(包括文件名、路径、目录的获取)封装起来,非常容易实现跨平台编程。

串口端口问题

在Windows下使用的是COM1~COMn的形式,而Linux下使用的ttySn的形式,如何编写跨平台的程序?

目前为止,我还没有找到一个非常好的方式,只是使用了条件编译的方式来限定不同的字符,如下:

 

 

 

OK,在微机课设中,我遇到的跨平台问题大概就这么些了,将来若再遇到棘手的问题,一定会贴上来供大家分享的,嘿嘿~~

 

Qt 和MFC对比及Qt跨平台优势

一.Qt的优势: 1.跨平台 2.signal-slot机制太漂亮了,与MFC相比,其非窗体类也支持该机制,这点设计者的想法让人佩服,并且由于其非窗体类也支持该机制,所以其很多用法让人感觉眼前一...

利用Qt开发跨平台APP(一)(Android)

本文将手把手教你如何在Windows环境下,使用Qt编译出安卓应用程序。Qt是一个优秀的跨平台开发工具。我们利用Qt可以很方便地将一次编写的应用,多次编译到不同平台上,如Windows、Linux、M...

Qt跨平台开发环境搭建

Qt跨平台开发环境搭建   1.     背景介绍 Qt是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者丰富的图形用户界面所需的所有功能。而且,Qt很容易扩展,并且允许真...

Qt实现软件从Windows到Linux跨平台

Qt,面向C++图形界面的一种架构,对于GUI有很好的扩展,通过近一个月的学习和摸索,终于实现了Windows下的软件代码移植到Linux,实现了软件的跨平台。这其中走了不少弯路,遇到很多问题,主要是...

跨平台开发之Qt开发

跨平台开发经验

Qt Creator中.pro跨平台(Win32\Linux)的写法

Qt Creator中的.pro文件的详解可参见【http://blog.csdn.net/adriano119/article/details/5878169】         本文主要结合目...

QT pro 文件跨平台的 include 和lib 配置

项目需要在windows 和 mac 上编译,所以针对windows 和mac 平台需要链接不同目录下的静态库文件。可以在pro 文件中分别指定不同的include 目录和lib 的目录。一个小的错误...

请使用Qt自带的宏来区分操作系统跨平台源码(★firecat推荐★)

#if  defined(Q_OS_WIN32)       p->start("cmd.exe", QStringList()  #elif defined(Q_OS_LINUX)        ...

为什么选择QT进行跨平台图形编程

转载自:http://www.tuenhai.com/wei-shen-me-qt-bian-cheng/ 为什么选择QT进行跨平台图形编程 QT GUI 库设计精良,...

QT跨平台windows编程

Qt 编程关键技术 1 信号与槽 信号和槽机制是QT的核心机制,是一种高级接口,应用于对象之间的通信。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用QT做跨平台编程
举报原因:
原因补充:

(最多只允许输入30个字)