2014-06-25 44 views
1

我想包含一個文件句柄和流作爲我的類的私有成員。Qt寫入QTextStream指針

class Window : public QMainWindow, private Ui::Window 
{ 
    Q_OBJECT 

    public: 
    . 
    . 
    . 
    private: 
     QFile * outputFile; 
     QTextStream * outputFileStream; 
}; 

我再要初始化的手柄和流在構造函數中:

Window::Window(QWidget *parent) 
    : QMainWindow(parent) 
{ 
    setupUi(this); 
    outputFile = new QFile("/path/to/file.log"); 
    outputFile->open(QIODevice::WriteOnly | QIODevice::Text); 
    outputFileStream = new QTextStream(outputFile); 
    *outputFileStream << "=======List=======\n\n"; 
} 

這將創建該文件,但沒有寫它。然而,當我使用了一個QFile的指針,而不是QTextStream,它的工作原理:

Window::Window(QWidget *parent) 
    : QMainWindow(parent) 
{ 
    setupUi(this); 
    outputFile = new QFile("/path/to/file.log"); 
    outputFile->open(QIODevice::WriteOnly | QIODevice::Text); 
    QTextStream outputFileStream(&outputFile); 
    outputFileStream << "=======List=======\n\n"; 
} 

這是因爲我不能在類的主要功能寫入該流後是不是非常有用。這兩個看起來相當於我,但顯然不是。

我沒有設置這個實現。如果有人提出了一個更好的方法(即使用靜態或其他方法),這也是一個很好的建議。

+0

這是行不通的? (* outputFileStream)<<「=======列表======= \ n \ n」; – TheDarkKnight

+1

我試過了。沒有骰子。 – MrUser

回答

1

我知道它通過刷新outputFileStream來處理指針。

+1

這很有道理。在第一種情況下,您將保持文本流對象處於打開狀態,以便內部緩衝區填滿,直到滿了爲止,然後纔將數據刷新到文件。在本地版本中,文本流對象在離開構造函數時被銷燬,並將其內部緩衝區刷新到其析構函數中的文件中。 – RobbieE