Linux下的Qt入门
一、下载Qt安装包。
上Qt官网看到Linux的安装包只有Linux 64Bit 的,可悲的实验室Linux系统装的是32bit 的。于是辗转到“Qt开源社区”(www.qter.org),在“历史版本下载”中找到了qt-everywhere-opensource-src-4.8.7.tar.gz这个文件。顾名思义应该是在任何平台都可以使用的开源库。至于版本好像没有看到5以上的。
二、Linux下的安装。
将下载下来的安装包最好放在Linux的用户文件目录下(/home/yourname),这样方便操作。然后解压缩:
tar xvfz qt-everywhere-opensource-src-4.8.7.tar.gz
解压缩完成之后在打开该目录,看到有个configure的可执行文件。运行这个文件。
./configure
Which editon? c/o 选择 o,也即开源;
Yes 接受许可;
到此即生成了makefile文件。编译一下:
gmake;
这里我遇到了gmake报错:Basic Xlib functionalitytest failed!
缺少Xlib相关支持。在之前挂载的cdrom安装盘中找到了需要的三个库: libX11-devel、libXext-devel、libXtst-devel以及libXt-devel。可以直接双击.rpm文进行安装。
重新gmake,这个过程时间比较久,最少半小时。
最后运行gmake install进行安装。
三、设置环境变量
类似于Windows下设置环境变量一样。编辑/etc/profile,在最后面添加:
export QTDIR = /usr/local/Trolltech/Qt-4.8.7
export PATH = $QTDIR/bin:$PATH
export MANPATH = $QTDIR/man:$MANPATH
export LD_LIBRARY_PATH = $QTDIR/lib:$LD_LIBRARY_PATH
重启生效。
输入qmake –v查看下版本信息;
Which qmake 验证下环境变量是否设置正确。
四、Hello工程
新建一个Qt_Helloworld文件夹,在该文件夹下面新建一个文档,命名为main.cpp,输入以下:
#include"MainWindow.h"
#include<QApplication>
#include <QtGui>
int main(int argc, char*argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
MainWindow w;
w.show();
return a.exec();
}
再新建一个MainWindow.h和一个MainWindow.cpp文件,分别:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include"ui_mainwindow.h"
namespace Ui {
class MainWindow;
}
class MainWindow : publicQMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
QPushButton *m_button;
QPushButton *m_button2;
QLineEdit *m_lineedit;
private slots: //********************
void myslot();
void myslot2();
};
#endif // MAINWINDOW_H
#include"MainWindow.h"
MainWindow::MainWindow(QWidget*parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_button = new QPushButton(this);
m_button->setText("ä½ å¥½,Qt!");
m_button->setGeometry(100,300,150,50);
m_button2 = new QPushButton(this);
m_button2->setText("ä½ å¥½,Linux!");
m_button2->setGeometry(100,100,150,50);
m_lineedit = new QLineEdit(this);
m_lineedit->setGeometry(400,200,250,50);
connect(m_button,SIGNAL(clicked()),this,SLOT(myslot()));
connect(m_button2,SIGNAL(clicked()),this,SLOT(myslot2()));
}
void MainWindow::myslot()
{
m_lineedit->setText("ä½ å¥½ï¼ŒQtï¼");
}
void MainWindow::myslot2()
{
m_lineedit->setText("ä½ å¥½ï¼ŒLinuxï¼");
}
MainWindow::~MainWindow()
{
delete ui;
}
添加一个Qt的界面资源.ui文件。在终端上运行designer,即打开了Qt Designer工具,新建一个MainWindow。存储为mainwindow.ui文件。
这里我不添加控件,而是通过代码动态编程实现的。实现了点击两个按钮分别在EDIT中显示对应的内容。具体见代码。
有了这些文件之后,在该目录下启动终端。
运行qmake –project;生成了一个Qt project;
运行qmake;生成了makefile文件;
运行make;生成了可执行文件。
运行该可执行文件./Qt_Helloworld;看到以下结果:
五、中文支持
在安装完Qt后,启动Designer或者Creator时会发现界面上的汉字无法显示或者显示乱码。这需要添加中文支持。
打开Qt安装包目录,找到configure的目录,重新configure下:
./configure –fontconfig
如果configure出错了,提示fontconfig未通过,则去到./config.tests/x11/fontconfig目录,执行make;
如果这时make出错了,提示缺少freetype开发库,则先安装freetype、freetype –devel两个库文件,安装方式可同上面安装Xlib的方法。
可能还缺少ft2build.h,则安装fonconfig –devel;
如果缺少ftheader.h 则输入 ln –s /usr/include/fteetype2/freetype//usr/include/freetype ;
然后重新gmake,重新gmake install。这时就可以了。
自己开发的程序运行后,如果遇到中文乱码,请在代码中添加两行代码:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());