QT/E心得 - 窗口无边框,显示中文

来源:互联网 发布:国企公司制改革 知乎 编辑:程序博客网 时间:2024/06/07 01:35
没搞多九QT/E,只是想把自己前段时间的学习心得跟大家交流...

此文为本人工作时的小记,其中关于了一些QT/E程序如何在ARM开发板上执行的内容.

在虚拟机中对程序进行编译时,需要先进行EXPORT设置一些路径,如下:
[root@localhost tmake-1.8]# export TMAKEDIR=$PWD
[root@localhost tmake-1.8]# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
[root@localhost tmake-1.8]# export PATH=$TMAKEDIR/bin:$PATH
[root@localhost qt-2.3.7]# export QTDIR=$PWD
[root@localhost qt-2.3.7]# export QTEDIR=$QTDIR
[root@localhost qt-2.3.7]# export PATH=$QTDIR/bin:$PATH
[root@localhost qt-2.3.7]# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
上面是将程序编译成可在虚拟机下执行(模拟桢缓冲中显示,即QVFB中显示)。

如果是要将程序交叉编译成在开发板中执行的程序, EXPORT设置路径需要改动一处:
[root@localhost tmake-1.8]# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++.

在虚拟机的HOME/WANGXL目录下面有两个关于libqte.so文件的目录,一个是lib_qte此为在开发板上qt/lib中的libqte.so等文件,另一个lib_qte_old是虚拟机上qt-2.3.7/lib中的libqte.so等文件。

要在开发板上显示虚拟机中的QTE程序,需要在虚拟机中装入交叉编译环境(arm-elf-gcc-3.2-full-tar.bz2与arm-linux-gcc-3.3.tar.bz2,板上自带程序),装入地址为:
/usr/local/arm。另需要将/usr/local/arm/3.2-elf/bin与/usr/local/arm/3.3/bin路径写入.bash_profile文件当中。

此外,需要在虚拟机路径/usr/local/arm/3.3/lib/gcc-lib/arm-linux/3.3中加入开发板中的libqte.so等四个文件(位于../qt/lib下),这个是在虚拟机中将C++文件编译成可在开发板中执行的文件所必须的qte库支持文件。

如果是要将编译为arm下可执行改为编译为虚拟机下可执行,需要将前面讲到的EXPORT设置改动一处,另外,需要删除Makefile文件,重新建立Makefile文件。

另外,用designer设计的ui文件生成头文件和CPP文件的UIC命令格式如下:
uic –o test.h test.ui
uic –i test.h –o test.cpp test.ui

由pro文件生成Makefile文件的格式如下
tmake –o Makefile test.pro

另外,开发板从15号开发机上获取文件,由于开发板速度慢,用超级终端(串口连在开发板与主机之间)对开发板进行操作(但对QTE程序执行操作需要在开发板子上操作)。
开发板从开发机获取可执行文件命令如下:
wget http://172.20.6.15/可执行文件名




显示中文方法一:
QFont unifont("unifont",12,50); unifont.setPixelSize(10);
label = new QLabel( p, "Red_Label" );
label->setGeometry( QRect( 80, 5, 90, 14 ) );
label->setFont( unifont );
label->setText( QString::fromUtf8("汉字显示") ) ;

显示中文相关链接一:
我已经用了三中方法尝试,但是都有问题,不知道问题在哪儿?
方法一:QLabel *lb=new QLabel(QString::fromLocal8Bit("中文显示"),this);
显示出来的是方框。
方法二:QLabel *lb=new QLabel(QString::fromUtf8("中文显示"),this);
显示出来的还是方框。
方法三:QTextCodec *code=QTextCodec::codecForName("GBK");
QString uniStr=code->toUnicode("中文显示");
QLabel *lb=new QLabel(uniStr,this);
显示出来的结果是:只显示了一个“中”字,其余的仍然是方框。
我已经很努力的研究了一阵子了,但是不知道是何问题,还请各位高手指点。
能够显示汉字,说明QT带有中文字库。
显示中文相关链接二:
靠,这个问题都还在问呀最简单的方法如下:
QLabel *label11;
label11 = new QLabel(QString::fromLocal8Bit("背光亮度设置"), this );
label11->move(20,10);
label11->resize(150,20);


窗口无边框方法:
#include <QNameSpace.h>
mainform(0,0,QT::WStyle_Customize|Qt::WStyle_NoBorder);  
原创粉丝点击