2013-06-20 43 views
0

我有一個運行另一個長過程(可能需要幾天)的監控程序。該過程會生成大量的日誌信息。這個日誌信息不能存儲在內存中,所以我將它重定向到日誌文件中。問題是監控程序需要顯示這個日誌。我無法使用需要在內存中存儲整個文本的小部件。我需要有somting像TextModel的QT模型/查看像日誌查看器

class TextView 
{ 
    void setModel(TextModel*) 
} 

class TextModel 
{ 
    int pageCount(); 
    QString page(int i); 

Q_SIGNALS: 
    void pageCountChanged(int cnt) 
}; 

實施,將在每個請求的內存中加載頁面。

courese我可以從零開始實現文本查看器小部件,但我沒有足夠的時間來做到這一點。任何消化?

回答

1

您可以使用QListView並從QAbstractListModel派生模型。您需要在模型中定義rowCountdata方法。

+0

感謝您的回答。其實我已經考慮過了。這裏的一個小問題是,從模型單行請求視圖。理想情況下,如果查看將請求一個頁面,它將成爲垃圾。當然我會保留這個作爲備份解決方案。 – ArmanHunanyan

+0

您可以從文件中讀取頁面並將其緩存在模型中。在'data()'中,你可以從已經被緩存的頁面中返回行。無論如何,如果你的模型是基於文件的,你需要實現一些緩存,因爲視圖的緩存很弱,視圖有時會產生很多'data()'調用。 –