日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Qt的安装和使用中的常见问题(详细版)

發(fā)布時(shí)間:2023/11/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt的安装和使用中的常见问题(详细版) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于太長(zhǎng)不看的朋友,可參考Qt的安裝和使用中的常見問題(簡(jiǎn)略版)。

目錄

  • 1、引入
  • 2、Qt簡(jiǎn)介
  • 3、Qt版本
    • 3.1 查看安裝的Qt版本
    • 3.2 查看當(dāng)前項(xiàng)目使用的Qt版本
    • 3.3 查看當(dāng)前項(xiàng)目使用的QtCreator版本
    • 3.4 Linux命令行下查看和使用不同版本的Qt
  • 4、Qt模塊
  • 5、引用頭文件報(bào)錯(cuò)

1、引入

對(duì)于Qt的初學(xué)者來(lái)說(shuō),Qt有很多不熟悉的地方,安裝和使用時(shí),都會(huì)遇到各種各樣的“坑”。這些坑,如果經(jīng)歷過一次,就會(huì)發(fā)現(xiàn)其實(shí)是很簡(jiǎn)單的問題。但是如果不熟悉,那么可能折騰很久也沒解決。因此我把我自己遇到的(也是后來(lái)常常被問到的)一些問題放在這里,供大家參考、討論。

這個(gè)版本寫得詳細(xì)一些,適合喜歡了解細(xì)節(jié)的朋友。對(duì)于太長(zhǎng)不看的朋友,可參考Qt的安裝和使用中的常見問題(簡(jiǎn)略版)。

2、Qt簡(jiǎn)介

Qt是一款基于C++的跨平臺(tái)開發(fā)框架,不僅提供了便捷好用的圖形庫(kù),而且提供的框架比C++本身更好用(個(gè)人感覺)。

Qt和QtCreator
有些人可能會(huì)把Qt和QtCreator弄混,但是這兩個(gè)是不同的概念。

  • Qt:跨平臺(tái)開發(fā)框架,包括圖形庫(kù)、其他功能庫(kù)(多媒體、網(wǎng)絡(luò)等)以及對(duì)C++的擴(kuò)展。
  • QtCreator:專為使用Qt框架開發(fā)的集成開發(fā)環(huán)境(IDE)。QtCreator本身基于Qt框架開發(fā)的。

QtCreator不是Qt,它運(yùn)行起來(lái)只需要部分Qt庫(kù),所以QtCreator能運(yùn)行,根本不代表Qt所有模塊已經(jīng)被完整安裝了。

3、Qt版本

開發(fā)時(shí)經(jīng)常涉及Qt版本問題,因?yàn)樽钚碌陌姹究赡芴峁└嗟墓δ?#xff0c;但是有些以前的代碼是用舊版本寫的,因此要特別注意自己的版本。

3.1 查看安裝的Qt版本

一般情況下,你下載了比如說(shuō)Qt 5.8的安裝包,安裝之后,Qt的版本自然是5.8。但是,假如你安裝了多個(gè)版本的Qt,情況就復(fù)雜一點(diǎn)。事實(shí)上,你可以在QtCreator選擇對(duì)當(dāng)前的項(xiàng)目使用哪個(gè)版本的Qt來(lái)構(gòu)建。

下面是查看Qt版本的方法:

菜單欄 -> 工具(Tools) -> 選項(xiàng)(options)

左側(cè)邊欄里,選中“構(gòu)建與運(yùn)行(Build & Run)”,然后注意看右側(cè)上部的標(biāo)簽,有構(gòu)建套件(kit)、Qt版本(Qt Versions)、編譯器(compiler)、調(diào)試器(Debugger)等。

構(gòu)建套件指的是一些用來(lái)構(gòu)建你編寫的代碼的工具組合。這個(gè)組合里主要包括三個(gè)東西:qmake工具、編譯器、調(diào)試器。

不同的組合就是不同的構(gòu)建套件。你可以看到你的默認(rèn)套件是哪個(gè)。當(dāng)你打開一個(gè)之前沒有打開過的Qt項(xiàng)目,或者新建一個(gè)Qt項(xiàng)目時(shí),QtCreator都會(huì)讓你選擇一個(gè)套件,而默認(rèn)的就是這里顯示的默認(rèn)套件。

點(diǎn)擊任意一個(gè)套件,就能看到詳情:

這里,注意其中有一項(xiàng)叫做Qt版本(Qt version)。可以看到,我這里的是Qt5.8。

這就意味著,當(dāng)你使用這個(gè)套件的時(shí)候,你使用的Qt版本是5.8。當(dāng)然,這個(gè)套件的名字里寫了是5.8.0,不過要注意的是,手動(dòng)設(shè)置的套件名字可以任意取,所以還是要點(diǎn)進(jìn)去確認(rèn)一下。

我這里就裝了兩個(gè)版本的Qt,分別是5.7和5.8,所以這里能看到另一個(gè)套件對(duì)應(yīng)的Qt版本是5.7。

前面說(shuō)了,這個(gè)套件是一個(gè)組合,不一定就包含了你的計(jì)算機(jī)上所有的Qt版本。怎么知道計(jì)算機(jī)上有哪些Qt版本可用呢?

這就需要切換到Qt版本(Qt Versions)頁(yè)面了。

這里就能看到所有已經(jīng)自動(dòng)檢測(cè)到的,或者手動(dòng)配置的Qt版本。細(xì)心的朋友已經(jīng)發(fā)現(xiàn)了,每一個(gè)Qt版本后面,對(duì)應(yīng)的是一個(gè)qmake.exe(Linux下沒有后綴,就是qmake)。

沒錯(cuò)!決定你所使用的Qt版本的就是qmake工具的版本!Qt項(xiàng)目一般都是用qmake來(lái)管理的(按照默認(rèn)配置新建Qt項(xiàng)目,就是這樣),而每次構(gòu)建之前,qmake都會(huì)執(zhí)行,其中有個(gè)重要的任務(wù)就是告訴后續(xù)的編譯器,應(yīng)該用哪個(gè)版本Qt庫(kù)來(lái)編譯這些程序。

所以,前面說(shuō)的套件里的Qt版本,其實(shí)就是這個(gè)套件使用的qmake的版本。而套件里的編譯器和調(diào)試器等等,與你使用的Qt版本關(guān)系不大。

3.2 查看當(dāng)前項(xiàng)目使用的Qt版本

有個(gè)項(xiàng)目的代碼最初打開的時(shí)候沒留意用的套件和版本,或者代碼是從別人那里拷貝過來(lái)的,我怎么知道是用的哪個(gè)版本呢?

方法很簡(jiǎn)單!在QtCreator里打開這個(gè)項(xiàng)目,然后在最左側(cè)的欄目里,切換到項(xiàng)目(Project)

因?yàn)镼tCreator版本不同,所以你的界面可能跟我不一樣。不過沒關(guān)系,關(guān)鍵東西都在。找到Build & Run,然后就能看到這個(gè)項(xiàng)目正在使用的是什么套件以及什么Qt版本了。

例如,我這個(gè)項(xiàng)目使用的構(gòu)建套件名稱是Qt 5.8.0 (mingw53_32),對(duì)應(yīng)的Qt版本是5.8.0。

3.3 查看當(dāng)前項(xiàng)目使用的QtCreator版本

前面說(shuō)了Qt和QtCreator是不同的。Qt有版本,QtCreator作為一款軟件也有版本。在QtCreator菜單 -> 幫助 -> 關(guān)于QtCreator就可以查看了。

例如這里,我的QtCreator的版本是4.2.1,是基于Qt5.8.0開發(fā)的。

3.4 Linux命令行下查看和使用不同版本的Qt

如果在Linux命令行下使用,例如編譯一些簡(jiǎn)單程序或第三方庫(kù),可以不需要啟動(dòng)QtCreator,直接在命令行中編譯。這種情況,一般要求先執(zhí)行qmake,再執(zhí)行make。而執(zhí)行qmake時(shí)就決定了使用哪個(gè)版本的Qt,要特別注意。

所以在不確定的情況下,應(yīng)該使用qmake -v來(lái)查看Qt版本。如果執(zhí)行之后發(fā)現(xiàn)版本不對(duì),想用其他版本。那么需要找到你想用的版本對(duì)應(yīng)的qmake執(zhí)行文件在哪里。這個(gè)會(huì)復(fù)雜一些,下面簡(jiǎn)單說(shuō)一下。

1、如果安裝了多個(gè)版本的Qt,用find指令或者其他方式搜索qmake執(zhí)行文件,并且檢查一下搜索到的qmake分別對(duì)應(yīng)什么版本的Qt。注意針對(duì)搜索到的qmake,使用時(shí)要帶完整路徑,例如

$ sudo find / -name qmake # 查找名為qmake的文件 /home/XYZX/Qt5.8.0/5.8/gcc_64/bin/qmake # 這個(gè)是舉例 $ /home/XYZX/Qt5.8.0/5.8/gcc_64/bin/qmake -v # 查看某個(gè)找到的qmake是什么版本

之后如果要使用這個(gè)特定的qmake,那么編譯的時(shí)候不能只輸入qmake了,而是要有完整路徑,和上面查看版本的時(shí)候一樣:

$ /home/XYZX/Qt5.8.0/5.8/gcc_64/bin/qmake $ make

2、設(shè)置默認(rèn)的qmake
注意:我給出的目錄是我的情況,并非通用,不同系統(tǒng)上的路徑可能不同,但是大同小異,也可以通過搜索查看。

默認(rèn)的qmake就是在命令行里直接輸入qmake時(shí)使用的。用which qmake可以看到對(duì)應(yīng)的文件是/usr/bin/qmake。
用ls -l /usr/bin/qmake指令可以發(fā)現(xiàn)這個(gè)其實(shí)是個(gè)連接,指向的是/usr/bin/qtchooser。也就是由這個(gè)“選擇器”來(lái)選擇版本的。選擇的依據(jù)是配置文件。
該配置文件是:/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf。而進(jìn)一步可以發(fā)現(xiàn)此文件仍然只是一個(gè)鏈接,如果要修改默認(rèn)qmake,則需要修改此鏈接指向的具體文件。
例如,我的電腦上,該文件指向的是/usr/share/qtchooser/qt4-x86_64-linux-gnu.conf。
等等……我還在用Qt4?不不不……不要被文件名騙了,一定要打開文件查看一下!以下是我電腦上/usr/share/qtchooser/qt4-x86_64-linux-gnu.conf的內(nèi)容:

/home/xyzx/Qt5.8.0/5.8/gcc_64/bin #/usr/lib/x86_64-linux-gnu/qt4/bin #/usr/lib/x86_64-linux-gnu #/home/xyzx/Qt5.8.0/5.8/gcc_64/bin/qmake

不出意外的話,#開頭的都是注釋。那么有效的就是第一句話了,看來(lái)用的/home/xyzx/Qt5.8.0/5.8/gcc_64/bin里的qmake,其實(shí)是Qt5.8.0版本。
而與這個(gè)文件同級(jí)目錄下(即/usr/share/qtchooser/)還可能有其他的同類文件。確認(rèn)要使用哪個(gè)配置文件后,將鏈接/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf指向這個(gè)文件即可,例如

sudo ln -sf /usr/share/qtchooser/qt4-x86_64-linux-gnu.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

再次提醒:我這里寫的目錄可能跟你的實(shí)際情況不同。

4、Qt模塊

Qt框架是由多個(gè)模塊構(gòu)成的。最核心的是QtCore,也是必須的。如果不使用這個(gè)核心模塊,那其實(shí)是在用純C++編程,跟Qt無(wú)關(guān)了。其他模塊還有:

  • GUI 圖形界面
  • Multimedia 多媒體
  • Network 網(wǎng)絡(luò)功能
  • SQL 數(shù)據(jù)庫(kù)
    這里只列舉了部分。

在使用Qt編程時(shí),有兩個(gè)常見問題。

問題1:
用QtCreator打開項(xiàng)目時(shí)提示:Unknown module(s): XXXX

原因:提示的那個(gè)Qt模塊,你電腦上沒有安裝。一般是在Linux上通過apt來(lái)安裝Qt,之后發(fā)現(xiàn)這個(gè)問題。因?yàn)槟銢]有安裝所有Qt模塊。正如前面所說(shuō)的,不是說(shuō)QtCreator能運(yùn)行,就意味著你的Qt裝完整了。
解決辦法就是安裝這個(gè)模塊。如果使用apt或synaptic安裝軟件包,如何查找呢?對(duì)于Qt5版本,Qt模塊的軟件包名稱有規(guī)律,都是libqt5開頭的,后面跟模塊名稱。例如Qt5核心模塊的軟件包是libqt5core5a,GUI模塊的軟件包是libqt5gui5。后面可能會(huì)跟不同后綴。
有一個(gè)例外(就我目前遇到的),是multimedia。除了剛才說(shuō)的包之外,你可能還需要安裝qtmultimedia5-dev。

對(duì)于缺少模塊的情況,一般安裝libqt5+模塊名的包就可以了。安裝完成后需要重新打開QtCreator。
如果安裝完后還是不行,那么可以將名稱相關(guān)的包都安裝試試。

問題2:
引用一個(gè)Qt的頭文件,結(jié)果提示:No such file or directory: QXXXX.h

原因:你沒有在你的項(xiàng)目里引入這個(gè)模塊。
解決方法很簡(jiǎn)單,在.pro文件中加入這個(gè)模塊。添加位置是開頭的QT += ...后面。例如,你想引用QTcpServer.h,首先在幫助里查找QTcpServer類,看到它屬于network模塊,再引入這個(gè)模塊。如果QtCreator里打不開幫助,也可以在網(wǎng)頁(yè)上搜索,因?yàn)镼t官方網(wǎng)站提供了幫助文檔。

例如這一行原本如下,表示使用了core和gui兩個(gè)模塊。

QT += core gui

新增network模塊:

QT += core gui network

注意:全小寫,用空格與之前的隔開。

5、引用頭文件報(bào)錯(cuò)

問題1:引用一個(gè)自己的頭文件,.h文件已經(jīng)存在于項(xiàng)目文件夾里了,但是編譯時(shí)報(bào)錯(cuò):No such file or directory: XXXX.h
原因:文件沒有加入項(xiàng)目。去.pro文件里查看,這個(gè)頭文件是否已經(jīng)加入到headers列表里。如果沒有加入的話,也不用自己敲鍵盤把文件名寫到列表里,直接對(duì)項(xiàng)目名點(diǎn)擊鼠標(biāo)右鍵,再點(diǎn)擊“添加已有文件”,選擇報(bào)錯(cuò)的文件(包括沒有加入sources列表的cpp文件)。

問題2:引用一個(gè)頭文件,.h文件存在且已經(jīng)加入項(xiàng)目,但是編譯時(shí)還是報(bào)錯(cuò):No such file or directory: XXXX.h
問題:引用路徑錯(cuò)誤。對(duì)于一些復(fù)雜一點(diǎn)的項(xiàng)目,不同功能的代碼是放在不同的文件夾下的。引用時(shí)確保寫上了頭文件的相對(duì)路徑。你在哪里引用就相對(duì)于誰(shuí)。

例如,有一個(gè)頭文件位于/project/function/function1.h,而此時(shí)你編輯的文件是/project/ui/mywindow.h,那么引用時(shí)的寫法是:#include "../function/function1.h"。

另外,.pro文件里可以加入一個(gè)INCLUDEPATH +=,可以自定義引用搜索路徑。如果在.pro文件里寫入了
INCLUDEPATH += \ function \ ui
那么,在項(xiàng)目的任何文件里,引用/project/function/function1.h或者/project/ui/mywindow.h時(shí),都可以直接寫#include "function1.h"和#include "mywindow.h"



謝謝關(guān)注
未完待續(xù)

轉(zhuǎn)載于:https://www.cnblogs.com/xia-weiwen/p/10074882.html

總結(jié)

以上是生活随笔為你收集整理的Qt的安装和使用中的常见问题(详细版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。