精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美孕妇孕交黑巨大网站| 国产凹凸在线观看一区二区| 国产亚洲精品一区二区| 性猛交ⅹ×××乱大交| 亚洲色图美国十次| 2021中文字幕一区亚洲| 91精品久久久久久久久久另类| 日韩精品一区二区亚洲av性色| 国产精品香蕉| 欧美日韩综合不卡| 欧美在线一区视频| 色欧美激情视频在线| www.欧美精品一二区| 91精品综合久久久久久五月天| 日韩成人高清视频| 欧美gvvideo网站| 精品日本美女福利在线观看| 欧美福利一区二区三区| 久久精品一级片| 国产成人三级| 精品国产污污免费网站入口| 在线看的黄色网址| 国产乱码在线| 自拍偷拍亚洲激情| 日韩欧美亚洲v片| 午夜福利一区二区三区| 国产在线精品一区二区| 国产精品久久97| 丰满少妇乱子伦精品看片| 亚洲经典一区| 日韩在线精品视频| 亚洲一级片在线播放| 亚洲人成伊人成综合图片| 精品乱码亚洲一区二区不卡| 18禁裸男晨勃露j毛免费观看 | 日韩欧美美女一区二区三区| 欧美一级黄色片视频| 特黄视频在线观看| 国产伦理精品不卡| 成人精品在线观看| 中文字幕欧美人妻精品| 丝袜亚洲精品中文字幕一区| 97色在线观看| 国产又爽又黄的视频| 激情综合在线| 久久久亚洲影院你懂的| 日本青青草视频| 中文无码久久精品| 超碰91人人草人人干| 手机av在线不卡| 日韩成人精品一区| 欧美一区二区三区免费在线看| 午夜精品在线免费观看| 色天使综合视频| 欧洲日韩一区二区三区| 国产一级片黄色| 欧美成人app| 欧美无乱码久久久免费午夜一区| 在线观看视频黄色| 久久99精品久久| 综合激情成人伊人| 麻豆一区二区三区在线观看| 欧美 日韩 国产 成人 在线 91 | 一女三黑人理论片在线| 日韩av字幕| 亚洲美女视频网站| 日本乱子伦xxxx| 国产成人av| 视频一区视频二区国产精品 | 中文字幕第10页| 亚洲超碰在线观看| 欧美精品一区二区三区四区| 一起草在线视频| 国产精品久久久久77777丨| 在线视频欧美区| 在线黄色免费看| 中文在线综合| 亚洲男人天堂手机在线| 天天舔天天操天天干| 国产高清一区| 欧美极品美女电影一区| 9.1片黄在线观看| 久久久久久美女精品| 久久久久久91| 销魂美女一区二区| 国产一区二区三区四区三区四| 欧美精品videofree1080p| 青青操免费在线视频| 免费观看日韩av| 91产国在线观看动作片喷水| 无码aⅴ精品一区二区三区| 久99久精品视频免费观看| 亚洲在线观看视频| 亚洲 美腿 欧美 偷拍| 国产片一区二区三区| 国产一区二区在线网站| 国产三区四区在线观看| 亚洲少妇中出一区| 国产特级淫片高清视频| 精品久久久网| 日韩精品高清视频| 99久久99久久精品国产| 99在线精品免费视频九九视| 成人国产在线视频| 青青免费在线视频| 亚洲色图视频网| 久久无码高潮喷水| 最新国产精品精品视频| 国产亚洲精品高潮| 日韩av一二三区| 国产在线一区二区综合免费视频| 久久久久久一区| 在线视频国产区| 色婷婷久久综合| 国产精品成人免费一区久久羞羞| sdde在线播放一区二区| 久久久免费在线观看| 亚洲系列在线观看| 美女爽到高潮91| 国内精品久久久久久久果冻传媒| 午夜在线视频播放| 午夜精品久久一牛影视| www.久久com| 久久激情电影| 国产精品va在线| 亚洲 欧美 自拍偷拍| 亚洲午夜免费电影| 精品人妻一区二区三区免费| av亚洲在线观看| 全亚洲最色的网站在线观看| 亚洲国产精品久久久久久6q| 成人毛片在线观看| 色呦呦网站入口| 成人一区视频| 中文字幕日韩av电影| 一级黄色大片视频| 97久久超碰国产精品电影| 日本aa在线观看| 国产精品亚洲欧美日韩一区在线| 91精品国产丝袜白色高跟鞋| 色屁屁草草影院ccyy.com| 模特精品在线| 精品一区久久久久久| 超级碰碰不卡在线视频| 精品国精品国产| 久久久久久久久久久网| 国产成人在线看| 农村寡妇一区二区三区| h片在线观看视频免费免费| 欧美午夜久久久| 欧美肉大捧一进一出免费视频| 国语精品一区| 国产精品久久久久久久久久久久冷 | 国产精选一区二区三区| 成人免费看片视频在线观看| 国产成人免费av一区二区午夜 | 超碰人人干人人| 免费精品99久久国产综合精品| 欧洲精品亚洲精品| 亚洲成人一区在线观看| 中文字幕日韩专区| 国产精品国产三级国产普通话对白| 中文字幕中文字幕一区二区| 日韩欧美中文视频| 伊人成人网在线看| 久久久精品动漫| 欧美精品高清| 精品国产一区二区三区久久久狼| 国产欧美一级片| www国产精品av| 成人小视频在线看| 欧美亚洲黄色| 欧美大奶子在线| 天天干天天插天天操| 色哟哟一区二区| 国产福利视频网站| 丁香婷婷深情五月亚洲| 国产日产欧美视频| 日韩综合一区| 91嫩草在线| 电影天堂国产精品| 欧美乱大交xxxxx| 午夜视频免费看| 欧美日韩一级大片网址| 免费网站看av| 国产午夜精品在线观看| 91丝袜超薄交口足| 中国女人久久久| 宅男av一区二区三区| 凹凸av导航大全精品| 久久精品国产亚洲7777| 丰满人妻一区二区三区四区53 | 日韩欧美国产二区| 麻豆国产一区二区三区四区| 欧美一区视频在线| www免费在线观看| 欧美亚洲国产一区在线观看网站 | 成人自拍性视频| 精精国产xxxx视频在线野外 | 亚洲a∨无码无在线观看| 成人深夜在线观看| 一女二男3p波多野结衣| 国产日韩高清一区二区三区在线| 一区二区在线中文字幕电影视频| 国产精品视屏| 亚洲va欧美va国产综合久久| 一区二区三区短视频| 亚洲精品mp4| 亚洲中文字幕在线观看| 狠狠色狠狠色综合日日五| 三级影片在线看| 中文字幕av资源一区| 国产又粗又长又爽| 国内不卡的二区三区中文字幕| 1024精品视频| 精品动漫3d一区二区三区免费版| 伊人av成人| sdde在线播放一区二区| 激情视频一区二区| 91精品久久久久久综合五月天| 国产精品电影一区| 在线人成日本视频| 久久久久久久久久久国产| 久草免费在线| 在线国产精品播放| 国内精品在线视频| 亚洲国产天堂久久综合网| 国产成人麻豆精品午夜在线| 欧美精品亚洲二区| 久久久久久激情| 中文字幕在线不卡| 亚洲天堂岛国片| 国产日韩欧美激情| 制服丝袜第二页| 97国产精品videossex| 国产高潮失禁喷水爽到抽搐| 国产精品一区二区在线观看网站| 91国产精品视频在线观看| 日本aⅴ免费视频一区二区三区 | 国产一区二区电影| 国产美女18xxxx免费视频| 免费观看久久久4p| 色噜噜狠狠永久免费| 麻豆免费精品视频| 99re精彩视频| 精品亚洲成a人| 国产精品久久久久久久99| 激情图区综合网| 涩多多在线观看| 丁香婷婷综合色啪| 国产白嫩美女无套久久| 91首页免费视频| 在哪里可以看毛片| 国产性色一区二区| 国产美女网站视频| 亚洲私人影院在线观看| 免费毛片在线播放免费| 亚洲国产美国国产综合一区二区| 国产精品99精品无码视| 福利视频导航一区| 无码人妻一区二区三区线| 欧美亚洲国产一区二区三区va| 中文字幕丰满人伦在线| 91精品久久久久久蜜臀| 亚洲精品无amm毛片| 日韩国产一区三区| 九色在线观看| 色婷婷综合久久久久| 四虎影院观看视频在线观看 | 成人av色网站| 成人高h视频在线| 老汉色老汉首页av亚洲| 国产日产欧美精品| 精品三级国产| 精品国产乱码久久久久久88av| 伊甸园亚洲一区| 亚洲欧洲三级| 国语精品一区| 天天干天天干天天干天天干天天干| 狠狠久久亚洲欧美| 精品国产一区在线| 国产精品久久久久天堂| 中文字幕免费视频| 中文字幕人成不卡一区| 日本在线视频免费观看| 色婷婷狠狠综合| 朝桐光av在线一区二区三区| 日韩电影中文字幕在线观看| 91伦理视频在线观看| 久久久久在线观看| 国产精品99精品一区二区三区∴| 成人欧美一区二区三区黑人免费| 尤物tv在线精品| 国产欧美123| 日韩精品亚洲一区二区三区免费| 黄色永久免费网站| 成人福利视频网站| 国产中文av在线| 欧美午夜精品在线| japanese国产| 中日韩美女免费视频网址在线观看| 免费污视频在线| 色综合91久久精品中文字幕| 中文字幕在线视频久| **亚洲第一综合导航网站| 精品国产精品国产偷麻豆| 日韩精品一区二区免费| 欧美aaaaaa午夜精品| 久久久久久久无码| 一区二区三区久久久| 在线视频你懂得| 国产丝袜精品第一页| 欧美人与禽性xxxxx杂性| 国产精品欧美亚洲777777 | 婷婷精品国产一区二区三区日韩| 亚洲高清自拍| 两女双腿交缠激烈磨豆腐 | 黄页网站免费观看| 欧美日韩国产美女| 国产美女性感在线观看懂色av | 午夜精品三级久久久有码| 欧美一区二区三区小说| 自拍视频在线| 国产成人精品免费久久久久| 六月丁香久久丫| 福利视频免费在线观看| 韩日欧美一区二区三区| 美国黄色特级片| 91福利资源站| 精品推荐蜜桃传媒| 欧美在线视频观看免费网站| 9l视频自拍蝌蚪9l视频成人| 男人草女人视频| 国产精品一卡二| 亚洲欧美小视频| 欧美一卡二卡在线观看| a级网站在线播放| 亚洲r级在线观看| 婷婷亚洲五月| 在线一区二区不卡| 亚洲欧美日韩小说| 伊人免费在线观看高清版| 一色桃子一区二区| 78精品国产综合久久香蕉| 区一区二区三区中文字幕| 久久午夜av| 91精品久久久久久久久久久久| 欧美视频在线观看一区二区| 国产小视频免费在线网址| 国产精品91久久久| 日韩高清欧美| 中文字幕一区久久| 成人在线视频首页| 国产精品111| 精品视频在线导航| 亚洲成人不卡| 亚洲欧洲另类精品久久综合| 久久99精品国产.久久久久久| 国产午夜精品理论片| 日韩一级视频免费观看在线| 美足av综合网| 狼狼综合久久久久综合网| 久久综合九色| 欧美一区二区三区观看| 91麻豆精品国产无毒不卡在线观看| 成a人片在线观看| 韩国一区二区三区美女美女秀 | 日本精品久久久久影院| av日韩一区| 国产精品va在线观看无码| av一二三不卡影片| 国产性生活视频| 久久精品小视频| 好吊妞视频这里有精品| 国产欧美高清在线| 一区二区中文视频| 国模私拍视频在线| 国产99久久精品一区二区永久免费 | 亚洲爆乳无码精品aaa片蜜桃| 成人高清在线视频| 国产91av在线播放| 色综合天天狠天天透天天伊人| 欧美sss在线视频| 日韩中文字幕a| 午夜电影一区二区| 日本中文字幕在线视频| 国产精华一区| 男男成人高潮片免费网站| 青青草精品在线视频| 亚洲男人天天操| 深夜激情久久| 一本久道综合色婷婷五月| 亚洲日本乱码在线观看| 欧美日本网站| 亚洲综合中文字幕68页| 日韩成人一区二区| 久久久久无码精品国产| 中文字幕日韩av电影| 小嫩嫩12欧美| 少妇性l交大片7724com|