QStatusBarには毎回1行しかないため、履歴を追跡したり、履歴をログファイルに保存したりできません。
そのため、メインウィンドウにドックウィジェットを配置して、必要なメッセージを複数行の方法と自動スクロールの方法で表示し、ログファイルに自動的に保存できるようにしたいのです。
私の質問は、Qtでこれを行う方法ですか?
QStatusBarには毎回1行しかないため、履歴を追跡したり、履歴をログファイルに保存したりできません。
そのため、メインウィンドウにドックウィジェットを配置して、必要なメッセージを複数行の方法と自動スクロールの方法で表示し、ログファイルに自動的に保存できるようにしたいのです。
私の質問は、Qtでこれを行う方法ですか?
探しているものが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()