Qt的安裝與配置問題

12.qtcreator配置
1.打開 tools->options 選擇Build&Run              
2.增長Compilers(編譯器)
點擊Add選擇GCC
而後點擊Browse選擇g++
/home/csgec/software/arm-2014.05/bin/arm-none-linux-gnueabi-g++
選擇完成點Apply
3.增長Qt版本
選擇Qt Versions
點擊Add
選擇/usr/local/qtlib5.6.0/bin/qmake
選擇完成點擊Apply
4.增長工具包
選擇Kits
點擊Add
修改Complier爲第2步設置的
修改Qt version爲第3步設置的
Name改成Qt5.6.0-ARM
完成後點擊Apply and OK html

 

 

 

集成的QT及QT Creator安裝比較easy,本文介紹的是QT和QT Create獨立安裝的方法,固然,也不是很難。linux

      首先說明一下:QT是一個類庫,QTCreator是一個框架。要使用QTCreator這個框架必須先把QT的平臺搭建好。這個平臺須要什麼呢?主要須要如下幾樣:QT(QT庫每一個版本都有些許變化,能夠根據本身須要選擇版本,這裏的我的須要並非指功能,而是指你能夠選擇的教學資源,你有本QT4的書,最好就選擇QT4的庫,固然,你非要選擇QT5也是能夠的啦,這裏只是建議),編譯器(這裏主要有兩種,一種是GNU的MinGw,一種是微軟的VS平臺,若是你安裝了VS,那就不必去安裝MinGW了,對我而言,二者沒什麼區別),調試器(MinGW有gdb,VS我就不清楚了,我先下的qt-opensource-windows-x86-vs2008-4.8.6.exe,這個版本的條件估計就是你必需要裝了VS2008的平臺,我裝了VS2008,編譯運行都沒問題,但是調試出了點小問題,不知道怎麼解決,因此就轉投MinGW了)。程序員

       綜上,要下載的就三樣:QT Creator,QT庫,(http://download.qt-project.org/official_releases/算法

                                              MinGW  (http://www.gnu.org/ 具體就本身去找吧,MinGW是一個套件 ,數據庫

                                               包括了gcc,g++,gdb,因此不用去額外下gdb了)編程

        三個的具體安裝方法就不介紹了,基本都是默認安裝,也不用破解什麼的,你懂的,都是開源軟件。windows

       安裝完畢後打開QT Creator,進入工具-->選項-->構建與運行,在這裏指定QT庫和編譯器,調試器不用指定,QTCreator會本身指定。具體是先選QT庫和編譯器,而後是構建套件。搭建完畢以後就能夠開始寫程序了。但調試的時候仍是會提示調試助手未開的問題,直接忽略吧,沒什麼大問題。網絡

        以上是在win7的環境下安裝,比較簡單。Linux下的安裝過程可能比較複雜一點,但大體也是相同的,只是軟件的安裝過程有點不同。由於QT庫提供的是源碼包,因此安裝比較麻煩,大體是解壓(tarzxvf...)-->配置(./configure)-->執行make-->最後執行sudo makeinstall來安裝。QT庫安裝完畢以後同樣的配置方法。app

 

 

 

1、前言

  說到Qt,不能不說到C++,這門偉大的語言。由於其面向對象的編程思想和陡峭的學習曲線,一開始學習起來非常吃力。Qt從QT4開始基本封裝了不少C++的工具庫和界面庫,並且支持跨平臺,這是它最大的優點。相比於古老的MFC和使用C#的WPF來講,我更喜歡Qt來進行C++的界面設計,這也是我重新開始拾起Qt學習之路的緣由。框架

  說完了感覺和學習的緣由,就開始介紹Qt5了。我這裏只作簡單的介紹,重要的仍是在學習過程當中體會Qt的編程邏輯和設計思想。

  Qt,坦白來講,並不僅是一個界面庫,他是C++編程思想的集大成者。它是獲得完善的C++應用程序框架。使用Qt,在必定程度上你得到的是一個「一站式」、「全方位」的解決方案,STL。string、XML、數據庫、網絡這些零散的功能都包含在Qt中,而且獲得了封裝,一共開發者使用。

  跨平臺GUI一般有三種實現策略,分別是:

 

  1. API 映射:API 映射是說,界面庫使用同一套 API,將其映射到不一樣的底層平臺上面。大致至關於將不一樣平臺的 API 提取公共部分。好比說,將 Windows 平臺上的按鈕控件和 Mac OS 上的按鈕組件都取名爲 Button。當你使用 Button 時,若是在 Windows 平臺上,則編譯成按鈕控件;若是在 Mac OS 上,則編譯成按鈕組件。這麼作的好處是,全部組件都是原始平臺自有的,外觀和原平生臺一致;缺點是,編寫庫代碼的時候須要大量工做用於適配不一樣平臺,而且,只能提取相同部分的 API。好比 Mac OS 的文本框自帶拼寫檢測,可是 Windows 上面沒有,則不能提供該功能。這種策略的典型表明是 wxWidgets。這也是一個標準的 C++ 庫,和 Qt 同樣龐大。它的語法看上去和 MFC 相似,有大量的宏。聽說,一個 MFC 程序員能夠很容易的轉換到 wxWidgets 上面來。
  2. API 模擬:前面提到,API 映射會「缺失」不一樣平臺的特定功能,而 API 模擬則是解決這一問題。不一樣平臺的有差別 API,將使用工具庫本身的代碼用於模擬出來。按照前面的例子,Mac OS 上的文本框有拼寫檢測,可是 Windows 的沒有。那麼,工具庫本身提供一個拼寫檢測算法,讓 Windows 的文本框也有相同的功能。API 模擬的典型表明是 wine ——一個 Linux 上面的 Windows 模擬器。它將大部分 Win32 API 在 Linux 上面模擬了出來,讓 Linux 能夠經過 wine 運行 Windows 程序。由此能夠看出,API 模擬最大優勢是,應用程序無需從新編譯,便可運行到特定平臺上。另一個例子是微軟提供的 DirectX,這個開發庫將屏蔽掉不一樣顯卡硬件所提供的具體功能。使用這個庫,你無需擔憂硬件之間的差別,若是有的顯卡沒有提供該種功能,SDK 會使用軟件的方式加以實現。
  3. GUI 模擬:任何平臺都提供了圖形繪製函數,例如畫點、畫線、畫面等。有些工具庫利用這些基本函數,再不一樣繪製出本身的組件,這就是 GUI 模擬。GUI 模擬的工做量無疑是很大的,由於須要使用最基本的繪圖函數將全部組件畫出來;而且這種繪製很難保證和原生組件如出一轍。可是,這一代價帶來的優點是,能夠很方便的修改組件的外觀——只要修改組件繪製函數便可。不少跨平臺的 GUI 庫都是使用的這種策略,例如 gtk+(這是一個 C 語言的圖形界面庫。使用 C 語言很優雅地實現了面向對象程序設計。不過,這也一樣帶來了一個問題——使用大量的類型轉換的宏來模擬多態,而且它的函數名通常都比較長,使用下劃線分割單詞,看上去和 Linux 一模一樣。gtk+ 並非模擬的原生界面,而有它本身的風格,因此有時候就會和操做系統的界面格格不入。),Swing 以及咱們的 Qt

  Qt 和 wxWidgets 同樣,也是一個標準的 C++ 庫。可是它的語法相似於 Java 的 Swing,十分清晰,並且使用信號槽(signal/slot)機制,讓程序看起來很明白——這也是不少人優先選擇 Qt 的一個很重要的緣由。不過,所謂「成也蕭何,敗也蕭何」。這種機制雖然很清楚,可是它所帶來的後果是你須要使用 Qt 的 moc 對程序進行預處理,纔可以再使用標準的 make 或者 nmake 進行正常的編譯,而且信號槽的調用要比普通的函數調用慢大約一個數量級(Qt 4 文檔中說明該數據,但 Qt 5 還沒有有官方說明)。Qt 的界面也不是原生風格的,儘管 Qt 使用 style 機制十分巧妙地模擬了原生界面。另外值得一提的是,Qt 不只僅可以運行在桌面環境中,還能夠運行在嵌入式平臺以及手機平臺。

  Qt 初版於 1991 年由 Trolltech (奇趣科技)發佈。後來在 2008 年,Nokia 斥資 1.5 億美圓收購 TrollTech,將 Qt 應用於 Symbian 程序開發。2012 年 8 月 9 日,Nokia 將 Qt 以 400 萬歐元的價格出售給 Digia。

  伴隨着 Qt,一直有兩種受權協議:商業受權以及開源受權。在 Qt 的早期版本,商業受權包含一些開源受權不提供的組件,可是在近期版本則不存在這個問題。以往人們對 Qt 的開源受權多有詬病。早期版本的 Qt 使用與 GPL 不兼容的協議受權,這直接致使了 KDE 與 GNOME 的戰爭(因爲 Linux 使用 GPL 協議發佈,GPL 協議具備傳染性,做爲 Linux 桌面環境的 KDE 倒是基於與 GPL 不兼容的 Qt 開發,這就不遵照 GPL 協議)。不過,如今 Qt 的開源版本使用的是 GPLv3 以及 LGPL 協議。這意味着,你能夠將 Qt 做爲一個庫鏈接到一個閉源軟件裏面。能夠說,Qt 協議的爭議已經不存在了。

2、Qt的安裝與配置

2.1 Qt的安裝

 

上面是兩種Qt,第一種是使用mingw編譯和調試開發的Qt,第二種(紅線中)是使用msvc也就是vs調試和編譯的Qt。開始學習的建議安裝第一種,自帶gcc編譯器和gdb調試器。安裝過程就不說了,一路綠燈就行,安裝完以後的狀態以下圖。

2.2Qt的項目建立

一直往下,中間過程就是本身改一下項目的名字和文件名字,直到出現下面的圖,就是建立完成了。

上圖是建立好的工程,這樣就是能夠運行的。

 2.3 Qt的配置

這裏說一下mingw版本的配置,此外msvc版本的Qt的編譯器和調試器都是msvc(個人具體版本是MSVC2013)。

個人是32bit,而後全部的編譯器和調試器都是套件自帶的,不用另行下載。

好了,Qt的開始工做作好了,就能夠開始學習了,就先到這裏。

no pains ,no gains. 給本身加油,爲將來奮鬥。
 
 
 
安裝成功了,開始下載的是msvc版本的qt,還少下一個qt-vsaddin插件(msvc版本的要下,裏面沒有調試器和編譯器),
後來下了一個mingw自帶qt庫,直接安裝,就能夠編譯運行代碼了。
 
 
#include "widget.h"
#include <QApplication>
#include <QLabel>
#include <Qstring>
#include <QDebug>
#include <cstdio>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    QWidget w;
//    QLabel label("hello world");
//    w.show();
//    label.show();
//    QString str1,str2;
//    str1="hello microgrid power ";
//    str2="this is microgrid power ";
//    str1+=str2;
//    str1.append("welcome to microgrid power");
//    str1=QString("dcdc雙向變換器   %1   %2").arg(str1).arg(str2);
//    QLabel *label=new QLabel(str1);
//    label->show();
//    QList<QString> list;
//    {
//        QString str("this is a test string");
//        list<<str;
//        list<<str;
//    }
//    qDebug()<<list[0]<<list[1];
 
     
 
     
    QList<int> list;
    for(int j=0;j<10;j++)
        list.insert(list.end(),j);
    QList<int>::iterator i;
    for(i=list.begin();i!=list.end();i++)
    {
        qDebug()<<*i<<" ";
    }
 
     
    return a.exec();
}








1 #include <QCoreApplication>
 2 #include <QString>
 3 #include <QtDebug>
 4 int main(int argc, char *argv[])
 5 {
 6     QCoreApplication a(argc, argv);
 7     QMap<QString,QString>map;
 8     map.insert("lili","1990");
 9     map.insert("wangli","1992");
10     map.insert("zhangli","1989");
11     QMap<QString,QString>::const_iterator i;
12     for(i=map.constBegin();i!=map.constEnd();i++)
13         qDebug()<<" "<<i.key()<<" "<<i.value();
14     QMap<QString,QString>::iterator mi;
15     mi=map.find("lili");
16     if(mi!=map.end())
17         mi.value()="1995";
18     QMap<QString,QString>::const_iterator modi;
19     for(modi=map.constBegin();modi!=map.constEnd();modi++)
20        qDebug()<<" "<<modi.key()<<" "<<modi.value();
21     return a.exec();
22 }
相關文章
相關標籤/搜索