精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從C++到Qt開發過程

移動開發
Qt是一個跨平臺應用程序框架。通過使用Qt,您可以一次性開發應用程序和用戶界面,然后將其部署到多個桌面和嵌入式操作系統,而無需重復編寫源代碼。

本文介紹的是從C++Qt開發過程,而對于Qt,想必大家都很熟悉了,Qt 是一個跨平臺的 C++ 圖形用戶界面庫,Qt是完全面向對象的,很容易擴展,并且允許真正地組件編程。那么先看本文的介紹吧。

在Qt論壇經??吹骄W友抱怨:

QPixmap("dbzhang800.png") 加載圖片不成功

QFile("dbzhang800.txt") 打開文件失敗
...

遇到這種問題,我一般回答:請注意區分進程的"工作目錄 "與程序所在的目錄 。但這種回答似乎還是顯得太蒼白了,既然如此,整理一下吧。

用到了相對路徑,你清楚"相對"是相對那個目錄的么?

當你抱怨Qt時,你知道它與Qt無關么?

Qt 是 C++ 的庫,我們還是從C++開始看吧(注:你可能會對 用ISO C++實現自己的信號槽(另類的Qt學習) 以及 從 C++ 到 Qt 感興趣) 。

相對路徑

剛接觸文件操作時,我們應該都寫過這種簡單的小程序吧:

  1. #include <stdio.h> 
  2. int main()  
  3. {  
  4.    FILE * pFile = fopen ("dbzhang800.txt" , "r");  
  5.    if (pFile == NULL) {  
  6.        perror ("Error opening file");  
  7.    } else {  
  8.      //do something  
  9.      fclose (pFile);  
  10.    }  
  11.    return 0;  

我們在可執行文件的同級目錄下放置dbzhang800.txt文件,然后調用編譯器編譯程序

  1. cl abc.cpp 

  1. g++ abc.cpp -o abc 

然后運行程序 abc,一切都很正常,是不?

可能是這個原因吧,導致很多人誤認為 :相對目錄相對的就是應用程序所在的目錄!

你有沒有沒試過:

  1. |-- dir1\  
  2. |    |-- abc(.exe)  
  3. |    `-- dbzhang800.txt  
  4. |  
  5. `-- dir2\ 

如果你在終端(或cmd窗口)中切換目錄到 dir2,然后通過 ../dir1/abc 運行程序,你的程序還能找到文本文件么?

如果你想讓它找到,此時文件應該放置到哪個目錄?

#p#

工作目錄

遇到相對路徑,我們肯定繞不過工作目錄(working directory)。它有時也被稱為當前工作目錄(c urrent  w orking d irectory),所有的相對路徑都是從工作目錄開始解釋的。 我們可以通過_chdir 等函數來更改進程的工作目錄。

接前面的例子,如果你真的對工作目錄沒有感覺,不妨直接輸出來自己看看(網絡上你可能會看到其他posix等提供的函數,我們只使用ISO C++標準中的函數):

  1. #include <direct.h> 
  2. #include <stdlib.h> 
  3. #include <stdio.h> 
  4. int main( void )  
  5. {  
  6.    char* buffer;  
  7.    if( (buffer = _getcwd( NULL, 0 )) == NULL ) {  
  8.       perror( "_getcwd error" );  
  9.    } else {  
  10.       printf( "Current Dir: %s \n", buffer);  
  11.       free(buffer);  
  12.    }  

(1)我們調用 _getcwd 來獲得當前的工作目錄

(2)你可以在終端或cmd中切換到其他目錄,通過絕對路徑來調用你的這個程序,來觀察輸出

(3)如果你在linux下,你可以創建啟動器,然后啟動器中可以設置工作目錄

(4)如果你在windows下,你可以為其創建快捷方式,快捷方式屬性中可以設置/修改工作目錄。

進程內修改工作目錄

看個無聊的例子:

  1. #include <stdio.h> 
  2. #include <direct.h> 
  3. int main()  
  4. {  
  5.     _chdir("c:\\temp");  
  6.    FILE * pFile = fopen ("dbzhang800.txt" , "r");  
  7.    if (pFile == NULL) {  
  8.        perror ("Error opening file");  
  9.    } else {  
  10.      //do something  
  11.      fclose (pFile);  
  12.    }  
  13.    return 0;  

使用  _chdir   修改工作目錄

現在,程序將去打開C盤temp目錄下的文本文件

注:_chdir   和  _getcwd 都有對應的寬字符(wchar_t)版本,此處不涉及(如果你要使用寬字符,不妨先考慮看看此文C 源文件內的中文(2) )。

 

回到Qt

Qt 是C++的庫,所以上面的東西你完全可以直接用。不過由于Qt提供更好用的東西QDir,我想你應該不會想著在Qt中使用前面提到的C、C++的中函數。

注意:如果你要操作的文件是只讀的,而且程序編譯完成后這些文件不需要變化,那么請首先考慮采用Qt的資源文件.qrc(本文不涉及這部分)。

下面:我們不妨看看前兩個函數在Qt中的等價物。

獲得工作目錄

如果你對工作目錄依然不熟悉,使用相對路徑出現問題時,請首先考慮使用下列語句:

  1. qDebug()<<QDir::currentPath(); 

看看和你預想的是否相符。

修改工作目錄

你很少需要這個操作

如果你用到了,請注意

  1. bool QDir::setCurrent ( const QString & path ) [static] 

而不是

 

  1. bool QDir::cd ( const QString & dirName )  
  2. bool QDir::cdUp ()  
  3. void QDir::setPath ( const QString & path ) 

程序所在目錄 如何知道你程序自己在那個目錄下,這是一個和平臺相關的問題(ISO C、C++ 目前似乎還不能告訴我們答案)。幸好Qt提供了很好的封裝了:

 

  1. QString QCoreApplication::applicationDirPath () [static] 

如果你想使用相對路徑訪問和可執行程序的同目錄下的文件,你可以將工作目錄設置成該目錄!

或者(這應該是更好點的方法),用該目錄和你的相對路徑先直接組合成絕對路徑再使用。

可是 ,你有沒有這個問題:當我們在windows下使用Qt的時候,生成的可執行程序會在debug或release目錄下,我們要訪問的文件在 project.pro 文件所在目錄(或其子目錄)下。這可怎么辦是好?

 

一個有用的函數

如果你想訪問工程目錄下的doc/dbzhang800.txt文件:

  1. |-- project.pro  
  2. |-- doc\  
  3. |     `-- dbzhang800.txt  
  4. |  
  5. |-- release\  
  6. |     `-- abc.exe  
  7. |  
  8. `-- debug\  
  9.       `-- abc.exe直接 

QFile(doc/dbzhang800.txt);好用么?如果在QtCreator 等環境下運行,一般可以工作,可是,進到debug下雙擊,卻不工作了(不要告訴我你看了上面內容還不知道原因哈)。

問題的解決方案來自C++ GUI Qt4 編程一書,我相信你肯定見過這個函數:

  1. QDir directoryOf(const QString &subdir)  
  2. {  
  3.     QDir dir(QApplication::applicationDirPath());  
  4.  
  5. #if defined(Q_OS_WIN)  
  6.     if (dir.dirName().toLower() == "debug"  
  7.             || dir.dirName().toLower() == "release"  
  8.             || dir.dirName().toLower() == "bin")  
  9.         dir.cdUp();  
  10. #elif defined(Q_OS_MAC)  
  11.     if (dir.dirName() == "MacOS") {  
  12.         dir.cdUp();  
  13.         dir.cdUp();  
  14.         dir.cdUp();  
  15.     }  
  16. #endif  
  17.     dir.cd(subdir);  
  18.     return dir;  

這個函數怎么用?   我們只需要:

 

  1. QFile(directoryOf("doc").absoluteFilePath(dbzhang800.txt));

shadow build 

qmake 很早就提供shadow build功能,但也就QtCreator默認使用了該功能以后,大部分人才開始注意到它。

  1. |-- project-sources/  
  2. |       |-- project.pro  
  3. |       `-- main.cpp  
  4. |  
  5. |-- build-vs2008/  
  6. |       |-- Debug/  
  7. |       |    `-- main.exe  
  8. |       `-- Release/  
  9. |            `-- main.exe   
  10. |-- build-vs2005/  
  11. |-- build-mingw/  
  12. |-- build-symbian/  
  13. |-- build-dbzhang800/  
  14. |-- .. 

.這兒沒有神奇之處,只不過一般資料上介紹qmake都是這樣說的:

  1. qmake project.pro 

make而 qtcreator 是這么做的

  1. cd ../build-vs2008  
  2. qmake ../project-sources/project.pro  
  3. make 

這種情況下,我們一般需要將一些文件拷貝到構建目錄下,具體可參考  http://blog.csdn.net/dbzhang800/archive/2011/04/23/6343838.aspx ***給的一段代碼。

小結:本章主要講述了從相對路徑說開來,C++到Qt的過程,相信你也學到了不少。希望本篇文章對你有幫助?。。?/p>

責任編輯:zhaolei 來源: CSDN博客
相關推薦

2011-07-13 17:42:32

CC++

2011-07-13 17:08:02

CC++

2011-07-13 16:48:55

CC++

2010-02-22 17:20:45

Python開發

2011-10-17 09:31:39

maven

2015-06-25 11:21:33

C++Objective-C

2021-12-06 23:00:36

CC++編程語言

2017-09-08 17:25:18

Vue探索實踐

2020-10-12 10:41:15

Linux 代碼 開發

2010-07-21 14:42:15

Windows Pho

2013-07-18 13:44:13

2009-08-27 16:03:31

從c#到c++

2010-03-04 09:54:24

Android開發

2012-02-28 14:48:41

2010-05-27 12:30:52

MySQL工具

2012-07-05 09:33:49

Nexus 7

2024-01-22 11:33:17

C++編程語言開發

2011-01-14 13:01:33

Linux PPCEclipseC

2009-08-20 15:54:48

從C#到C++

2011-09-05 17:07:45

MTK手機軟件
點贊
收藏

51CTO技術棧公眾號

亚洲精品免费一区亚洲精品免费精品一区 | 青梅竹马是消防员在线| 亚洲永久免费精品| 国产亚洲福利一区| 182午夜视频| 激情aⅴ欧美一区二区欲海潮| 久久久久成人黄色影片| 91色在线视频| 波多野结衣国产| 欧美综合久久| 亚洲国产精品久久久久秋霞不卡 | 久久久久久久| 亚洲色图欧洲色图婷婷| 精品在线观看一区二区| 中文在线观看av| 一区精品久久| 最近2019中文字幕mv免费看 | 精品久久ai| 欧美色老头old∨ideo| 久久久久久久9| 国产小视频在线播放| 国产精品系列在线播放| 国产精品第10页| 日本a在线观看| 色88久久久久高潮综合影院| 亚洲精品v天堂中文字幕| 天堂av8在线| 亚洲mmav| 欧美日韩加勒比精品一区| 最新欧美日韩亚洲| 国产天堂在线| 26uuu国产电影一区二区| 91嫩草在线| 国产一区二区三区中文字幕| 香蕉亚洲视频| 亚洲3p在线观看| 久草视频免费在线| 亚洲一区色图| 久久精品视频免费播放| 成人无码av片在线观看| 亚洲妇女av| 亚洲精品动漫久久久久| 亚洲精品国产成人av在线| 精品国产三级| 91麻豆精品国产无毒不卡在线观看| 国产美女三级视频| 国模精品视频| 精品动漫一区二区| 久久久亚洲国产精品| yellow91字幕网在线| 国产精品日韩成人| 亚洲三区在线| 69视频在线观看| 中文字幕精品—区二区四季| 日本一区二区三区免费观看 | 91在线国产福利| 黄色99视频| 四虎在线视频免费观看| av激情亚洲男人天堂| 国产原创精品| 五月天福利视频| 91小视频免费看| 免费影院在线观看一区| 欧美91精品久久久久国产性生爱| av不卡在线播放| 精品欧美一区二区精品久久| 天堂在线资源8| 91丝袜美腿高跟国产极品老师| 九九九热999| 九一在线视频| 国产精品国产a| 麻豆一区二区三区在线观看| 色www永久免费视频首页在线| 亚洲精品久久久蜜桃| 日韩精品在线观看av| 97蜜桃久久| 色综合天天在线| 日本在线一二三区| 九九99久久精品在免费线bt| 精品久久人人做人人爰| 性久久久久久久久久久| 精品国产日韩欧美| 久久久av网站| 国产精品2020| 日本成人超碰在线观看| 成人精品aaaa网站| 国产77777| 久久久久久电影| 一区二区三区四区久久| 国产啊啊啊视频在线观看| 高跟丝袜一区二区三区| 国产一伦一伦一伦| 99久久婷婷国产综合精品青牛牛| 亚洲国产精品va| 狂野欧美性猛交| 国内自拍一区| 国产精品www色诱视频| 国产sm主人调教女m视频| 本田岬高潮一区二区三区| 日韩欧美精品一区二区| 污污影院在线观看| 色婷婷国产精品| 91香蕉视频在线观看视频| 欧美福利在线播放网址导航| 色偷偷av亚洲男人的天堂| 国产精品成人av久久| 日本三级亚洲精品| 国产传媒一区二区| 91美女视频在线| 婷婷国产在线综合| 99视频在线观看视频| 久久成人高清| 久久久久久久999精品视频| 黄色污污网站在线观看| 高清国产一区二区三区| 亚洲精品免费在线看| 韩国成人二区| 精品欧美乱码久久久久久| а天堂中文在线资源| 亚洲免费影视| 成人动漫在线视频| 国产一区久久精品| 日本韩国欧美在线| 一起草在线视频| 国产精品v日韩精品v欧美精品网站| 国产成人精品一区二区| 无码精品黑人一区二区三区| 亚洲视频免费在线| 日本人视频jizz页码69| 亚洲区小说区图片区qvod按摩| 欧美高清视频在线观看| 国产一区二区三区四区视频| 国产欧美精品一区二区三区四区| 黄页网站大全在线观看| 亚洲三级av| 久久夜精品va视频免费观看| 中文字幕在线视频免费| 久久精品亚洲乱码伦伦中文| 自慰无码一区二区三区| 风间由美一区二区av101 | 精品三级久久| 精品日韩一区二区| 久久久久久蜜桃| 国产成人在线观看免费网站| 懂色av粉嫩av蜜臀av| 欧美系列精品| 久久精品成人欧美大片| 亚洲天堂视频网| 中文文精品字幕一区二区| 91色国产在线| 欧美丝袜丝交足nylons172| 国产成人精品一区二区在线| 精品欧美不卡一区二区在线观看| 欧美性感美女h网站在线观看免费| 水蜜桃av无码| 久久精品九九| 日韩亚洲一区在线播放| 欧美不卡高清一区二区三区| 一区国产精品视频| 一本到在线视频| √…a在线天堂一区| 天天久久综合网| 国产精品99一区二区| 国产精品久久久久久久久婷婷| 免费男女羞羞的视频网站在线观看| 日韩视频免费观看高清完整版在线观看| 欧美一区二区三区爽爽爽| 国产xxx精品视频大全| 加勒比成人在线| 日韩欧美天堂| 国产精品第1页| av免费在线免费| 精品国产91乱码一区二区三区| 国产手机在线视频| 久久久精品免费免费| 成人日韩在线视频| 欧美日韩国产一区精品一区| 国内视频一区| 成人国产一区二区三区精品麻豆| www.日韩av.com| 国产aⅴ爽av久久久久成人| 亚洲一二三四在线| a毛片毛片av永久免费| 另类调教123区| 激情五月婷婷六月| 精品视频日韩| 亚洲最大福利网站| 国产伦理精品| 中文字幕日韩欧美| 亚洲精品97久久中文字幕| 色综合天天狠狠| 久久久久亚洲av片无码| 99精品欧美一区| 向日葵污视频在线观看| 黄色一区二区三区四区| 日韩久久在线| 亚洲欧美久久精品| 91精品国产色综合久久不卡98口 | 女人抽搐喷水高潮国产精品| 国产精品丝袜高跟| 久草在线视频资源| 中文字幕日韩欧美在线视频| 黄色片一区二区三区| 欧美日韩精品专区| 日本一区二区三区免费视频| 日本一区二区三区在线观看| 曰本三级日本三级日本三级| 玖玖玖国产精品| 成人免费网站入口| 国产精品毛片一区二区在线看| 精品无人乱码一区二区三区的优势| 久久69成人| 日本久久久久亚洲中字幕| 色爱综合区网| 久久久精品日本| 国产精品一区在线看| 亚洲国产欧美一区二区丝袜黑人| 一级做a爱片性色毛片| 日韩欧美亚洲范冰冰与中字| 久久久久黄色片| 自拍偷自拍亚洲精品播放| 51妺嘿嘿午夜福利| 99久久久久免费精品国产| 涩涩网站在线看| 蜜臀久久99精品久久久画质超高清| 亚洲 自拍 另类小说综合图区| 亚洲成av人片乱码色午夜| 欧美日韩日本网| 日韩成人一级| 国产在线资源一区| 影音先锋欧美激情| 亚洲综合大片69999| 免费日韩成人| 国产精品视频专区| 国产一区一一区高清不卡| 4438全国成人免费| 国产乱码精品一区二三赶尸艳谈| 欧美疯狂性受xxxxx另类| 草莓福利社区在线| 久热精品视频在线观看| 免费在线看黄色| 日韩在线观看免费全集电视剧网站| 男人天堂综合| 亚洲色无码播放| 国产视频福利在线| 在线播放日韩精品| 成人在线观看免费| 伊人青青综合网站| 9191在线| 久久不射热爱视频精品| 免费成人黄色| 超碰精品一区二区三区乱码| 成年视频在线观看| 欧美黄色片视频| 久久不射影院| 欧美性受xxxx白人性爽| 涩涩视频在线播放| 国产精品99导航| 日本精品网站| 91精品中国老女人| 色播一区二区| 激情小说综合网| 国产欧美日韩在线一区二区| 色之综合天天综合色天天棕色| 成人精品视频| 浴室偷拍美女洗澡456在线| 欧美日韩视频| 99视频在线免费播放| 老司机精品导航| 一级黄色录像在线观看| 国产成人无遮挡在线视频| 中文字幕天堂av| 久久久久久久综合日本| 亚洲色图 激情小说| 亚洲三级在线播放| 日韩三级小视频| 在线观看中文字幕不卡| 国产普通话bbwbbwbbw| 亚洲成人aaa| 国产一级网站视频在线| 久久国产精品久久久| 3344国产永久在线观看视频| 国产精品99免视看9| 久久在线观看| 久久精品成人一区二区三区蜜臀 | 亚洲新声在线观看| 免费在线观看黄| 久久男人av资源网站| 欧洲av一区二区| 91黄色精品| 国产成人精品三级高清久久91| 秋霞在线一区二区| 99视频一区| 婷婷激情5月天| 久久综合中文字幕| 午夜69成人做爰视频| 欧美特级www| 99在线观看免费| 亚洲性视频网址| 男女视频在线| 国产日韩欧美在线观看| 欧美有码在线| 少妇一晚三次一区二区三区| 日韩激情视频网站| 免费黄色a级片| 欧美国产日韩一二三区| 国产第100页| 日韩一区国产二区欧美三区| 国产精品99999| 国语自产精品视频在线看抢先版图片 | 日本高清不卡在线| 无码国模国产在线观看| 日韩精品欧美在线| 韩国在线视频一区| 天天干天天干天天干天天干天天干| 成人三级伦理片| 中国一级片在线观看| 色香色香欲天天天影视综合网| www.国产免费| 日韩视频第一页| 亚洲成人av观看| 免费成人av网站| 亚洲最黄网站| www.啪啪.com| 亚洲尤物视频在线| 国产免费高清av| 中文字幕一精品亚洲无线一区| 偷拍自拍在线看| 国产亚洲精品美女久久久m| 欧美韩日精品| 一区二区三区欧美精品| 亚洲国产高清在线| 啪啪小视频网站| 亚洲天堂av网| 成人天堂yy6080亚洲高清| 免费精品视频一区| 国产毛片一区| 懂色av粉嫩av蜜乳av| 激情亚洲一区二区三区四区| 好吊视频一区二区三区| 久久久久国产视频| **爰片久久毛片| 免费人成在线观看视频播放| 国产精品夜夜爽| 免费无遮挡无码永久在线观看视频 | 久久网站免费视频| 99re这里只有精品6| 97免费在线观看视频| 日韩成人在线视频| 欧美男男tv网站在线播放| 久久国产精品-国产精品| 99精品国产99久久久久久福利| 高清中文字幕mv的电影| 亚洲成人福利片| 亚洲aⅴ在线观看| 日本亚洲欧洲色| 日韩在线理论| 久久久福利影院| 亚洲一级二级三级| 少妇性bbb搡bbb爽爽爽欧美| 日本精品视频在线观看| 亚洲+变态+欧美+另类+精品| 能在线观看的av网站| 中文字幕视频一区二区三区久| 一级片在线观看视频| 欧美成人第一页| 久久97久久97精品免视看秋霞| 91黄色小网站| 国产精品看片你懂得| www日本高清视频| 91av在线看| 成人三级视频| 一区二区三区人妻| 欧美日韩国产在线看| 日本暖暖在线视频| 粉嫩高清一区二区三区精品视频| 日韩视频精品在线观看| 精品人伦一区二区三电影| 欧美精品在线视频| 丰满大乳少妇在线观看网站 | 日批视频在线播放| 国产91免费看片| 亚洲精品一二三区区别| 欧美一区二区免费在线观看| 欧美伊人精品成人久久综合97| 麻豆视频在线播放| 国产丝袜不卡| 蜜桃视频在线一区| 黄色激情视频在线观看| 亚洲人精选亚洲人成在线| 久久一级大片| 成年人在线看片| 亚洲国产毛片aaaaa无费看 | 欧美精品999| 国产探花一区| 怡红院一区二区| 欧美日韩aaaaaa| 天堂中文av在线资源库| 五月天色婷婷综合| 久久久天堂av|