23

QStatusBarには毎回1行しかないため、履歴を追跡したり、履歴をログファイルに保存したりできません。

そのため、メインウィンドウにドックウィジェットを配置して、必要なメッセージを複数行の方法と自動スクロールの方法で表示し、ログファイルに自動的に保存できるようにしたいのです。

私の質問は、Qtでこれを行う方法ですか?

4

1 に答える 1

31

探しているものがQtCreatorの[アプリケーション出力]ペインに似ている場合は、単純なものでQPlainTextEditその作業を実行できます。QPlainTextEdit::setReadOnly(true)ユーザーがコンテンツを編集できないようにする場合(つまり、アプリケーションのみがコンテンツに書き込むことができる場合)に呼び出すことができます。

自動スクロールしてログファイルに自動的に保存する場合は、サブクラス化する必要があります。始めるためのちょっとしたことがあります:

class MyLogWindow : public QPlainTextEdit
{
    Q_OBJECT
/* snip */
public:
    void appendMessage(const QString& text);

private:
    QFile m_logFile;
};


void MyLogWindow::appendMessage(const QString& text)
{
    this->appendPlainText(text); // Adds the message to the widget
    this->verticalScrollBar()->setValue(this->verticalScrollBar()->maximum()); // Scrolls to the bottom
    m_logFile.write(text); // Logs to file
}

ボイラープレートの処理(ファイルの開閉、改行の処理など)はあなたに任せます。

MyLogWindowのドックにインスタンスを配置するだけで、何かをログに記録する必要があるたびQMainWindowに呼び出して、表示、スクロール、保存を自動的に行うことができます。MyLogWindow::appendMessage()

于 2013-01-04T16:54:12.787 に答える