23

QStatusBar 每次只有一行,我无法跟踪历史记录或将历史记录保存在日志文件中。

所以我想在我的主窗口中有一个停靠小部件,它能够以多行方式和自动滚动方式显示我需要的消息,然后自动保存到日志文件中。

我的问题是如何在 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放在您的.QMainWindowMyLogWindow::appendMessage()

于 2013-01-04T16:54:12.787 回答