㈠ qt中通過添加現有文件後找不到目錄
qt中通過胡首添加現有文件後找不到目錄的原因是沒有識別到該文件的加入。解決辦罩桐法
1、重建工程,一次性加入所有需要的褲悶數文件,有時需要增加對應的介面。
2、只要三個步驟:清理項目,執行qmake,重新編譯。
㈡ qt 打開文件的幾種方式
在/usr 目錄下有e1.xml 文件,在程序的執行文件所在目錄下有個test文件夾,test里有configurefile2.xml ;configurefile3.xml 一:工程里使用後綴為qrc的資源文件: 比如 資源文件里的內容為:<RCC<qresource <file alias="configfile1"/usr/configurefile1.xml</file <file alias="configfile2"test/configurefile2.xml</file <filetest/configurefile3.xml</file </qresource</RCC(其中test是在工程執行文件所在路徑下的一個文件夾) 這樣在程序中: QFile file1(":/configfile1"); QFile file2(":/configfile2"); QFile file3(":/test/configurefile3.xml"); file1.open(QFile::ReadOnly); file2.open(QFile::ReadOnly); file3.open(QFile::ReadOnly);上述三條打開文件的操作都可以成功打開對應文件, 但是如果在資源文件里 如果對某個文件的引用里加了alias別名的操作,比如QFile file2(":/test/configurefile2.xml"); file2.open(QFile::ReadOnly);將打開文件失敗。 QT里:/表示對資源的引用,不是表示當前目錄 二 使用相對路徑 QFile file3("test/configurefile3.xml"); file3.open(QFile::ReadOnly);OPEN成功 三 使用絕對路徑
㈢ qt文件讀取
1、Qt 作為一個通用開發庫,提供了跨平台的文件操作能力。文件操作是應用程序必不可少的部分。
2、Qt5增加了QFileDevice類。途中所涉及的類及其用途簡要說明如下:
· QFlie:訪問本地文件或者嵌入資源;
· QTemporaryFile:創建和訪問本地文件系統的臨時文件;
· QBuffer:讀寫QByteArray;
· QProcess:運行外部程序,處理進程間通訊;
· QTcpSocket:TCP協議網路數據傳輸;
· QUdpSocket:傳輸 UDP 報文;
· QSslSocket:使用 SSL/TLS 傳輸數據;
· QFileDevice:新增加的類,提供了有關文件操作的通用實現。
3、這其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是順序訪問設備。所謂「順序訪問」,是指它們的數據只能訪問一遍:從頭走到尾,從第一個位元組開始訪問,直到最後一個位元組,中途不能返回去讀取上一個位元組;QFile、QTemporaryFile和QBuffer是隨機訪問設備,可以訪問任意位置任意次數,還可以使用QIODevice::seek()函數來重新定位文件訪問位置指針。
4、QFile主要提供了有關文件的各種操作,比如打開文件、關閉文件、刷新文件等。我們可以使用QDataStream或QTextStream類來讀寫文件,也可以使用QIODevice提供的read()、readLine()、readAll()以及write()這樣的函數。值得注意的是,有關文件本身的信息,比如文件名、文件所在目錄的名字等,則是通過QFileInfo獲取,而不是自己分析文件路徑字元串。
5、舉個例子,打開文件時,需要參數指定打開文件的模式:
Constant Value Description
QIODevice::NotOpen 0x0000 The device is not open.
QIODevice::ReadOnly 0x0001 The device is open for reading.
QIODevice::WriteOnly 0x0002 The device is open for writing.
QIODevice::ReadWrite ReadOnly | WriteOnly The device is open for reading and writing.
QIODevice::Append 0x0004 The device is opened in append mode, so that all data is written to the end of the file.
QIODevice::Truncate 0x0008 If possible, the device is truncated before it is opened. All earlier contents of the device are lost.
QIODevice::Text 0x0010 When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32.QIODevice::Unbuffered 0x0020 Any buffer in the device is bypassed.
㈣ qt 怎樣返回exe所在目錄的上一級目錄,currentPath這個是絕對路徑,不行,希望高手指點函數,謝謝大家!
QString getRunParentPath()
{
QString strPath = QCoreApplication::applicationDirPath();
QDir dir(strPath);
bool bSuccess = dir.cdUp();
if (bSuccess == true) {
strPath = dir.path() + "/";
}
return strPath;
}