老规矩,先下载一个qt-x11-opensource版本,configure,make,make install一切都照说明来。
默认安装目录:/usr/local/Trolltech/Qt-4.5.0/
编写环境变量设置脚本,以免链到系统的旧Qt库。
qt_pc.env 脚本内容如下:
export QMAKESPEC=linux-g++export QTDIR=/usr/local/Trolltech/Qt-4.5.0export PKG_CONFIG_PATH=/usr/local/lib:${QTDIR}/lib/pkgconfigexport LD_LIBRARY_PATH=/usr/local/lib:${QTDIR}/libexport PATH=${QTDIR}/bin:$PATH第一行指定qmake使用的spec,意思是使用/usr/local/Trolltech/Qt-4.5.0/mkspecs/linux-g++这个目录中的文件指定一些变量。如果是嵌入式平台可以看到里面连用什么编译器都指定了,比如/usr/local/Trolltech/Qt-4.5.0/mkspecs/qws/linux-arm-g++目录。
第二行声明的QT的安装目录。
第三行是为了pkg-config能够找到qt库
第四行是为了运行时能找到qt库
第五行保证运行qmake,rcc等工具时是运行的最新的,而不是系统上的旧版本。
1.建个目录存放工程:
mkdir qt_study
cd qt_study
mkdir src
2.创建工程pro文件:
vi qt_study.pro
文件内容如下:
#模板app,生成独立运行的程序
TEMPLATE = app
#生成的可执行文件存放目录
DESTDIR = bin
#生成的可执行文件名称
TARGET = qt_study
#源文件、临时文件存放目录
DEPENDPATH += src
INCLUDEPATH +=
MOC_DIR = .tmp/moc
RCC_DIR = .tmp/rcc
UI_DIR = .tmp/ui
OBJECTS_DIR = .tmp/obj
#打开警告、支持大文件
CONFIG += qt warn_on largefile
#指定代码中国际化需要翻译的字符串存储文件。可指定多个
TRANSLATIONS = qt_study_zh_CN.ts
#资源文件,一些图片,翻译文本等。编译后会与可执行文件集成在一个文件中
RESOURCES += qt_study.qrc
# 源代码
HEADERS += src/mainwindow.h
SOURCES += src/main.cpp \
src/mainwindow.cpp
3.创建资源文件
vi qt_study.qrc
文件内容如下:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>./qt_study_zh_CN.qm</file>
</qresource>
</RCC>
这儿只包含了一个翻译文本文件,qm文件是由ts文件生成的,后面会有说明。
4.编写代码:
mkdir src
cd src
编写main.cpp,mainwindow.cpp,mainwindow.h。
main.cpp:
#include "mainwindow.h"
void installTranslator()
{
//获取系统的local name。
//在我的系统上执行locale,得到的是"zh_CN.UTF-8"。这儿name()会得到zh_CN
QString locale = QLocale::system().name();
//新创建一个QTranslator对象,不能是栈对象。
QTranslator* translator = new QTranslator;
//从内置资源中load语言包。:/表示是内置资源;qt_study_zh_CN.qm会被load
translator->load( QString(":/qt_study_" + locale) );
//安装语言包。程序启动后的界面就是zh_CN的了。
qApp->installTranslator(translator);
}
int main( int argc, char** argv )
{
//初始化资源。就是qt_study.qrc文件去掉扩展名
Q_INIT_RESOURCE( qt_study );
QApplication app( argc, argv );
//安装translator
installTranslator();
//创建主界面
qtStudyMainWindow w;
w.show();
return app.exec();