2015-02-05 12:09:00 Ciellee 阅读数 154
  • C++QT5跨平台界面编程原理和实战大全

    课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,开始会讲解QTCreator配置。课程源码基于c++ 11以上版本,建议至少安装vs2013以上。课程后会做一个图像编辑器的示例。

    8569 人正在学习 去看看 夏曹俊

2015-01-28

准备两个文件:

qt-x11-opensource-src-4.5.3.tar.gz

qt-creator-opensource-linux-x86_64-3.3.0.run

1、获得源代码

src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/

2009 年 10 月 1 日发布的 qt-x11-opensource-src-4.5.3.tar.gz,大小 122 Mb。

2、解压缩

tar xvfz qt-x11-opensource-src-4.5.3.tar.gz

3、生成 makefile 文件

./configure

这个时候他会问你:“Which edition of Qt do you want to use?”

然后给你两个类型供选择:

Type ''c'' if you want to use the Commercial Edition. 

Type ''o'' if you want to use the Open Source Edition.

第一个是商业版,第二个是自由版。

选择 ''o''(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。

这时候,出现许可界面。

选择  ''yes'' 接受许可协议。

开始生成 makefile 文件。这个大约需要 5 -10 分钟的时间。

4、Qt 编译

gmake            //若是此处出错,解决办法见下面

这个过程时间比较长,需要两个小时左右。

5、Qt 安装

运行 gmake install

默认安装至 /usr/local/Trolltech/Qt-4.5.3

大约 5 - 10 分钟。正常结束,安装完毕。

运行 /usr/local/Trolltech/Qt-4.5.3/bin/designer ,看见 qt 启动,也就是说 qt 安装好了。

6、设置环境变量

一、先修改用户环境变量

vi /home/defonds/.bashrc

在其最后添加以下信息

export QTDIR=/usr/local/Trolltech/Qt-4.5.3 

export PATH=$QTDIR/bin:$PATH 

export MANPATH=$QTDIR/man:$MANPATH 

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

二、再修改所有用户环境变量

vi /etc/profile

在其最后添加以下信息

export QTDIR=/usr/local/Trolltech/Qt-4.5.3 

export PATH=$QTDIR/bin:$PATH 

export MANPATH=$QTDIR/man:$MANPATH 

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

三、测试一下

重新开一个终端,输入命令:

qmake -v   

输出结果:

QMake version 2.01a 

 Using Qt version 4.5.3 in /usr/local/Trolltech/Qt-4.5.3/lib

输入命令:

which qmake

输出结果:

/usr/local/Trolltech/Qt-4.5.3/bin/qmake

证明 Qt 环境变量已经被配置成功。

 

qt-creator的安装方法很简单,即:

1、下载qt-creator-opensource-linux-x86_64-3.3.0.run

2、chmod +x qt-creator-opensource-linux-x86_64-3.3.0.run

./ qt-creator-opensource-linux-x86_64-3.3.0.run

接下来就是非常熟悉的安装界面了

重启一下就好了!

 

 

刚开始编译时,gmake 没用的方法:

通过以上的分析可以知道,解决这个问题有两种方法,一个就是更改qmake的链接,使得qmake这个命令链接到安装目录下我们安装版本的qmake,还有一种方法就是改环境变量。

先说更改链接的方法,通过上面的介绍,这个其实操作就比较直接和简单了,命令和实验结果如下:

root@emouse:/# rm /etc/alternatives/qmake

root@emouse:/#

ln -s /usr/local/Trolltech/Qt-4.8.4/bin/qmake /etc/alternatives/qmake

root@emouse:/# qmake -v

QMake version 2.01a

Using Qt version 4.8.4 in /usr/local/Trolltech/Qt-4.8.4/lib

可以看到,qmake已经成功更改为4.8.4版本。

第二种办法就是更改环境变量,这个我没有尝试,有兴趣的自己验证。

vi /home/defonds/.bashrc 用来修改用户环境变量,在文件后面添加以下信息

 

export QTDIR=/usr/local/Trolltech/Qt-4.8.4

export PATH=$QTDIR/bin:$PATH 

export MANPATH=$QTDIR/man:$MANPATH 

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

再修改所有用户环境变量vi /etc/profile 同样在文件后添加上面的环境变量信息。这种方法应该同样可行。

 

 交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)

因实际项目需求,需将Qt编译成LINUX-ARM版,以下为整个操作过程,使用Qt编写的程序已在实际开发板上运行,在此贴出,但愿能为需要的朋友提供上帮助。

准备工作:

Linux内核版本:  

        开发电脑:Ubuntu12.04,开发板:linux-2.6.37

交叉编译工具:

        arm-none-linux-gnueabi 4.4.1

Qt安装包:

        qt-everywhere-opensource-src-4.8.4.tar.gz

安装

一.安装交叉编译工具

 1.本机使用的交叉编译工具是:arm-none-linux-gnueabi

 2.添加交叉编译工具的路径至相应环境变量中:

   export PATH=/usr/local/arm-2009q1-203/bin/:$PATH

 3.通过以下命令查看arm-none-linux-gnueabi编译工具是否安装成功

   a. 执行:arm-none-linux-gnueabi-g++ -v

   b. 执行:arm-none-linux-gnueabi-gcc -v

   如果以上两步都能正确打印对应的版本信息,则表明arm-none-linux-gnueabi编译工具

   已安装成功!

二.交叉编译ARM版Qt

 1.下载Qt源码包 qt-everywhere-opensource-src-4.8.4.tar.gz;

 2.解压Qt源码包

   tar -xvfz qt-everywhere-opensource-src-4.8.4.tar.gz

 3.修改文件:

/usr/local/Qt-4.8.4-linux-arm/mkspecs/qws/linux-arm-g++/qmake.conf

   # 设置交叉编译工具链:

   # 本项目使用的交叉编译工具是 arm-none-linux-gnueabi-g++

   #

   QMAKE_CC                         = arm-none-linux-gnueabi-gcc

   QMAKE_CXX                      = arm-none-linux-gnueabi-g++

   QMAKE_LINK                      = arm-none-linux-gnueabi-g++

   QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

  

   QMAKE_AR                   = arm-none-linux-gnueabi-ar cqs

   QMAKE_OBJCOPY      = arm-none-linux-gnueabi-objcopy

   QMAKE_STRIP             = arm-none-linux-gnueabi-strip

 4.(如有需要,需修改g++.conf文件)

   修改文件: /usr/local/Qt-4.8.4-linux-arm/mkspecs/common/g++.conf

   # 设置使用ARM高级特性的编译标志:

   #

   QMAKE_CFLAGS_RELEASE  += -O2 -march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp

 5.配置Qt编译选项

   进入Qt解压目录,执行如下命令:

 ./configure -prefix /usr/local/Qt-4.8.4 -embedded arm -xplatform /qws/linux-arm-g++ -depths 16,24,32 -little-endian -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-freetype -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput -plugin-mouse-pc -fast -qt-gfx-transformed -opensource -confirm-license

   或者写一个脚本config.sh,内容如上,之后运行这个脚本:./config.sh

 6.执行 make 命令;

   该步骤大致需要2~3个小时

错误:qtconcurrentiteratekernel.cpp:(.text+0x3c): undefined reference to `clock_gettime'

修改:vim src/corelib/Makefile 加上-lrt

LIBS          = $(SUBLIBS)  -L/opt/qt-everywhere-opensource-src-4.8.4/lib -lpthread -lm -ldl -lrt

 7.执行 make install 命令;

 8.修改用户环境变量 

   export ARMQTDIR=/usr/local/Qt-4.8.4

   export PATH=$ARMQTDIR/bin:$PATH

   export MANPATH=$ARMQTDIR/man:$MANPATH

   export LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH

 9.测试 ARM 版 QT 是否安装并配置成功:

    a. 执行:qmake -v

        打印以下对应信息:

                QMake version 2.01a

                Using Qt version 4.8.4 in /usr/local/Qt-4.8.4/lib

    b. 执行:which qmake

                打印以下对应信息:

                 /usr/local/Qt-4.8.4/bin/qmake

    c. 编写一个简单的测试程序,文件名为hello.cpp,进入该文件目录,进行工程编译,看是否能正确通编译

         hello.cpp源码:

         #include <QApplication>

         #include <QDebug>

         int main(int argc,char *argv[])

        {

            qDebug("Hello, welcome to Qt world!");

            return 0;

         }

  顺序执行以下操作:

  @1. 执行:qmake -project hello1.cpp

        生成 hello1.pro 工程文件

  @2. 执行:qmake hello1.pro

        生成 Makefile 文件

  @3. 执行:make

        生成 hello.o, hello 文件

       如果执行@2步骤时出现以下错误:

           QMAKESPEC has not been set, so configuration cannot be deduced.

           Error processing project file: hello1.pro

       则是 QMAKESPEC 变量没有设置好,执行:

      export QMAKESPEC=/usr/local/qt-4.8.4/mkspecs/qws/linux-arm-g++

cd /usr/local/Qt-4.8.4/lib/

file libQT*   看输出信息是ELF ARM

之后将/usr/local/Qt-4.8.4/lib/libQt* 根文件系统/usr/lib/下

2012-02-21 00:17:18 simeone18 阅读数 3741
  • C++QT5跨平台界面编程原理和实战大全

    课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,开始会讲解QTCreator配置。课程源码基于c++ 11以上版本,建议至少安装vs2013以上。课程后会做一个图像编辑器的示例。

    8569 人正在学习 去看看 夏曹俊

linux环境:ubuntu 10.4.2


我的qt是4.7.4版本的,现在最新的是4.80

去ftp://ftp.qt.nokia.com/qt/source/  下载qt源码:qt-everywhere-opensource-src-4.7.4.tar.gz


解压:

tar zvxf qt-everywhere-opensource-src-4.7.4.tar.gz

进入到解压目录:

cd qt-everywhere-opensource-src-4.7.4

查看安装的帮助文件

cat INSTALL

里面有x11平台的安装链接http://qt.nokia.com/doc/4.7/install-x11.html,到这个链接,里面有全部的安装教程。


注意如果没有装X11的库,可能会在中途编译出现错误

安装完成后,写个简单的hell,world来测试下


  1 #include <QApplication>
  2 #include <QtGui/QLabel>
  3 #include <QString>
  4 
  5 int main(int argc, char *argv[])
  6 {
  7     QApplication a(argc, argv);
  8 
  9     QString qStr("hello, qt");
 10     QLabel *label = new QLabel(qStr);
 11     label->show();
 12 
 13     return a.exec();
 14 }


qmake -project  //生成.pro工程文件

qmake //生成makefile

make

运行./hello,可以看到hell,qt


qt还有一个轻量级的IDE,我之前下的是qt-creator-linux-x86-opensource-2.3.1.bin,./qt-creator-linux-x86-opensource-2.3.1.bin运行就可以安装,安装完成后,同样可以新建个工程测试下。

至此qt开发环境就完成设置了。

2017-08-25 15:45:10 timothy93bp 阅读数 11055
  • C++QT5跨平台界面编程原理和实战大全

    课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,开始会讲解QTCreator配置。课程源码基于c++ 11以上版本,建议至少安装vs2013以上。课程后会做一个图像编辑器的示例。

    8569 人正在学习 去看看 夏曹俊

Qt5.8用FTP实现文件上传和下载(带进度条)

本文基于Qt5.8利用FTP协议实现文件的上传和下载。 本人所使用的FTP服务器端的操作系统为Linux(Ubuntu),编写QT代码的客户端的操作系统为Windows.

重要声明: 由于QT5.4版本之前和之后所提供的的类的差别非常大,所以请参考本文的读者确保您自己的Qt版本>=5.4。我们主要使用的类QNetWorkAccessManager从5.4版本才开始有。

FTP服务器的详细配置可在本人原创的另一篇名为“ Ubuntu16.04系统中配置FTP”的博客中查看(http://blog.csdn.net/timothy93bp/article/details/77527531)。

我的FTP服务器的用户名为peng, 密码为123456,ip地址为192.168.1.166, FTP服务器的根目录为/home/peng

  • 1. UI界面
  • 2. 修改.pro文件
  • 3. 头文件代码
  • 4. 源文件代码(上传,下载,进度条)
  • 5. FTP缺点

1. UI界面

本程序的UI界面如下:

这里写图片描述

文本编辑框中输入的是上传到服务器或者下载到本地之后,文件所要保存的名字, 该控件的objectName为“lineEdit“。”FTP上传”的按钮的objectName为“uploadButton“, “FTP下载”的按钮的objectName为“downloadButton“。

2. 修改.pro文件

首先,为了使用关于网络的类,我们首先要在.pro文件中加入一行:QT += network

//FTP.pro的内容

#-------------------------------------------------
#
# Project created by QtCreator 2017-08-25T14:00:00
#
#-------------------------------------------------

QT       += core gui
QT       += network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = FTP
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

3. 头文件代码

//mainwindow.h的内容

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QFile>
#include <QDebug>
#include <QMessageBox>
#include <QProgressBar>

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_uploadButton_clicked();
    void on_downloadButton_clicked();
    void readContent();
    void replyFinished(QNetworkReply*);
    void loadError(QNetworkReply::NetworkError);
    void loadProgress(qint64 bytesSent,qint64 bytesTotal);

private:
    Ui::MainWindow *ui;
    QNetworkReply *reply;
    QProgressBar *progressBar;
    QFile *file;
};

#endif // MAINWINDOW_H

4. 源文件代码

//mainwindow.cpp的内容

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_uploadButton_clicked()    //上传文件
{
    file = new QFile("C:/Users/Administrator/Desktop/test.jpg");
    file->open(QIODevice::ReadOnly);
    QByteArray byte_file = file->readAll();

    QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
    accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
    QUrl url("ftp://192.168.1.166/ftp/" + ui->lineEdit->text() + ".jpg");
    url.setPort(21);
    url.setUserName("peng");
    url.setPassword("123456");

    QNetworkRequest request(url);
    reply = accessManager->put(request, byte_file);

    progressBar = new QProgressBar();
    progressBar->setValue(0);
    progressBar->show();

    connect(accessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(loadError(QNetworkReply::NetworkError)));
    connect(reply, SIGNAL(uploadProgress(qint64 ,qint64)), this, SLOT(loadProgress(qint64 ,qint64)));
}


void MainWindow::on_downloadButton_clicked()    //下载文件
{
    file = new QFile(QApplication::applicationDirPath() + "/" + ui->lineEdit->text() + ".jpg");
    file->open(QIODevice::WriteOnly);

    QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
    accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
    QUrl url("ftp://192.168.1.166/ftp/test.jpg");
    url.setPort(21);
    url.setUserName("peng");
    url.setPassword("123456");

    QNetworkRequest request(url);
    reply = accessManager->get(request);

    progressBar = new QProgressBar();
    progressBar->setValue(0);
    progressBar->show();

    connect((QObject *)reply, SIGNAL(readyRead()), this, SLOT(readContent()));
    connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
    connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(loadError(QNetworkReply::NetworkError)));
    connect(reply, SIGNAL(downloadProgress(qint64 ,qint64)), this, SLOT(loadProgress(qint64 ,qint64)));
}

void MainWindow::readContent()    //下载时向本地文件中写入数据
{
    file->write(reply->readAll());
}

void MainWindow::replyFinished(QNetworkReply*)    //删除指针,更新和关闭文件
{
    if(reply->error() == QNetworkReply::NoError)
        {
            reply->deleteLater();
            file->flush();
            file->close();
        }
        else
        {
            QMessageBox::critical(NULL, tr("Error"), "Failed!!!");
        }
}

void MainWindow::loadProgress(qint64 bytesSent, qint64 bytesTotal)    //更新进度条
{
       qDebug() << "loaded" << bytesSent << "of" << bytesTotal;
       progressBar->setMaximum(bytesTotal); //最大值
       progressBar->setValue(bytesSent);  //当前值
}

void MainWindow::loadError(QNetworkReply::NetworkError)    //传输中的错误输出
{
     qDebug()<<"Error: "<<reply->error();
}

以上代码为全部代码,可以直接在客户端的QT上创建个名为“FTP”的基于MainWindow的新项目,然后按上述步骤建立ui界面,修改.pro文件,再往.h和.cpp文件中完全复制以上的代码,点击运行即可。

5. FTP的缺点

FTP有两种连接方式,PORT(主动方式)和PASV(被动方式)。简单来说,PORT是客户端与服务器端建立连接后,客户端开放一个端口,FTP服务器端把数据送到客户端开放的这个端口(店家送外卖); PASV是客户端与服务器端建立连接后,FTP服务器端开放一个端口,客户端去FTP服务器端开放的这个端口取数据(自己去店里买)。

当连接了路由的客户端电脑发送请求给FTP服务器后,客户端的内网IP首先先被翻译成它的公网IP,FTP服务器收到的IP 地址就为这个公网IP。若使用主动模式,由于路由器下的所有电脑都共享同一个公网IP,那么当服务器端给客户端根据这个IP地址发送数据库的时候,就不知道究竟该哪台电脑接收了。

所以,当内网电脑访问外网IP时,需要使用被动模式。这种情况下最好改用HTTP进行上传和下载。

用HTTP上传和下载的代码可在本人原创的另一篇名为“Qt5.8用HTTP实现文件上传和下载(带进度条)”的博客中查看。(http://blog.csdn.net/timothy93bp/article/details/77580365

2013-11-27 10:24:36 loveqrbaby 阅读数 2469
  • C++QT5跨平台界面编程原理和实战大全

    课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,开始会讲解QTCreator配置。课程源码基于c++ 11以上版本,建议至少安装vs2013以上。课程后会做一个图像编辑器的示例。

    8569 人正在学习 去看看 夏曹俊

1. 下载软件

    到ftp://ftp.qt-project.org/qt/source/ 下载Linux版本的Qt库 qt-everywhere-opensource-src-4.7.2.tar.gz

    到ftp://ftp.qt-project.org/qtcreator/ 下载Linux版本的qt-creator-linux-x86-opensource-2.1.0.bin

 

2.安装Qt Creator

    在终端里为qt-creator-linux-x86-opensource-2.1.0.bin添加可执行权限:

    chmod +x qt-creator-linux-x86-opensource-2.1.0.bin

    然后运行该文件:

    ./qt-creator-linux-x86-opensource-2.1.0.bin

    下面就可以按照提示安装了。

 

3.安装Qt库

    先解压qt-everywhere-opensource-src-4.7.2.tar.gz:

    tar -zxvf qt-everywhere-opensource-src-4.7.2.tar.gz

    然后进入到解压后的目录,在编译以前先要配置编译环境:
    (这里在新安装的Ubuntu中需要,在其他Linux版本中可能不需要,可以先跳过这一步,如果无法编译,再进行这一步)

    sudo apt-get install g++

    sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev

    (注意需要在联网状态下才可执行)完成后,输入以下命令:

    ./configure

    根据提示可能要输入 o(字母)然后回车,然后输入 yes 然后回车,完成后输入以下命令:

    ./make

    这个根据电脑的配置,可能需要1到2个小时,完成后,输入:

    sudo make install

    然后输入系统登录密码,这样就完成了Qt库的编译和安装。

 

4.配置系统变量:

    修改配置文件/etc/profile,添加如下行

    export QTDIR=/usr/local/Trolltech/Qt-4.7.2
    export PATH=$QTDIR/bin:$PATH 
    export MANPATH=$QTDIR/man:$MANPATH 
    export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 


5..关联Qt Creator和Qt库

    这个与在Windows下的方法一样,就是在Qt Creator的工具→选项→Qt4 中手动设置Qt版本,然后选择qmake路径即可。

 


6..源码中出现乱码问题
    如果查看源码时显示错误:无法使用“UTF-8”编码解码。无法编辑。
    那么请点击后面的“选择编码”按钮,然后选择 GB2312。 

    如果界面上的中文依然显示乱码,那么请将main.cpp文件中的:

    //Qt中显示中文
    QTextCodec *codec = QTextCodec::codecForName("system");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);

 

2015-01-25 21:34:00 juan190755422 阅读数 3003
  • C++QT5跨平台界面编程原理和实战大全

    课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,开始会讲解QTCreator配置。课程源码基于c++ 11以上版本,建议至少安装vs2013以上。课程后会做一个图像编辑器的示例。

    8569 人正在学习 去看看 夏曹俊

        最近在做关于进程迁移的项目,需要用到qt做项目的界面,根据网上找的资料做了一下总结,记录一下linux下qt安装与配置的全过程。

         1、获得源代码(网上有很多教程,因为比较早了,所以有些链接已经失效了,这里用的链接是今天试过有效的)
        src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/
        2009 年 10 月 1 日发布的 qt-x11-opensource-src-4.5.3.tar.gz,大小 122 Mb。

        2、解压缩
        tar xvfz qt-x11-opensource-src-4.5.3.tar.gz

        3、生成 makefile 文件
        ./configure
        这个时候他会问你:“Which edition of Qt do you want to use?”
        然后给你两个类型供选择:
        Type 'c' if you want to use the Commercial Edition.
        Type 'o' if you want to use the Open Source Edition.
        第一个是商业版,第二个是自由版。
        选择 'o'(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。
        这时候,出现许可界面。
        选择  'yes' 接受许可协议。
        开始生成 makefile 文件。这个大约需要 5 -10 分钟的时间。

        4。Qt 编译
        gmake
        这个过程时间比较长,需要两个小时左右。

        5。Qt 安装
        运行 gmake install
        默认安装至 /usr/local/Trolltech/Qt-4.5.3
        大约 5 - 10 分钟。正常结束,安装完毕。
        运行 /usr/local/Trolltech/Qt-4.5.3/bin/designer ,看见 qt 启动,也就是说 qt 安装好了。

        6。设置环境变量

        一。先修改用户环境变量

        vi /home/juan/.bashrc

        在其最后添加以下信息

        export QTDIR=/usr/local/Trolltech/Qt-4.5.3
        export PATH=$QTDIR/bin:$PATH
        export MANPATH=$QTDIR/man:$MANPATH
        export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

  二。再修改所有用户环境变量

        vi /etc/profile
        在其最后添加以下信息
        export QTDIR=/usr/local/Trolltech/Qt-4.5.3
        export PATH=$QTDIR/bin:$PATH
        export MANPATH=$QTDIR/man:$MANPATH
        export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

        三、测试一下

        重新开一个终端,输入命令:

        qmake -v

        输出结果:

        QMake version 2.01a
        Using Qt version 4.5.3 in /usr/local/Trolltech/Qt-4.5.3/lib
        输入命令:

        which qmake

        输出结果:

        /usr/local/Trolltech/Qt-4.5.3/bin/qmake

        证明 Qt 环境变量已经被配置成功

安装过程中遇到的问题:

(1)

“Project ERROR: Package gstreamer-app-0.10 not found.”

解决方案

yum install 'pkgconfig(gstreamer-app-0.10)'

我使用 wget 命令下载了需要的源码。

> mkdir ~/qt-downloads

> cd ~/qt-downloads

> wget http://download.qt-project.org/official_releases/qtcreator/2.8/2.8.1/qt-creator-linux-x86-opensource-2.8.1.run

qt-creator-linux-x86-opensource-2.8.1.run 就被下载到了 ~/qt-downloads 路径下。

2.2 修改文件权限

修改该文件的权限,使之有执行权限。

> chmod u+x qt-creator-linux-x86-opensource-2.8.1.run

2.3 安装

执行bin文件开始安装Qt Create

> sudo ./qt-creator-linux-x86-opensource-2.8.1.run

其期,安装向导会询问安装路径,我是把文件安装到 /usr/local/ 目录下的。

完成安装之后,Applications --> Programming 菜单下就有一个 Qt Creator 的入口。点击会弹出Qt Creator 的界面

运行./qtcreator 会出现

(/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by/opt/Qt4.5.3/Tools/QtCreator/lib/qtcreator/plugins/QtProject/../.././libQt4CLucene.so.6)) 

缺少`GLIBCXX_3.4.14'      需要升级gcc,更新至gcc-4.8.2

1、wget http://www.netgull.com/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.gz

2、tar xf gcc-4.8.2.tar.gz
3、cdgcc-4.8.2
4、./contrib/download_prerequisites  #利用自带脚本来下载依赖
5、mkdirgcc-build-4.8.2
6、cd gcc-build-4.8.2
7、../configure--enable-checking=release--enable-languages=c,c++--disable-multilib  #根据个人需要,这里只添加了C/C++支持
8、make
9、makeinstall
然后更新libstdc++.so.6
1、cp /root/gcc-4.8.2/gcc-build-4.8.2/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64
2、ln -sf /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6

再打开qtcreator就可以了


linux下的QT SDK安装

阅读数 6738

没有更多推荐了,返回首页