QStatusBar 每次只有一行,我无法跟踪历史记录或将历史记录保存在日志文件中。
所以我想在我的主窗口中有一个停靠小部件,它能够以多行方式和自动滚动方式显示我需要的消息,然后自动保存到日志文件中。
我的问题是如何在 Qt 中做到这一点?
QStatusBar 每次只有一行,我无法跟踪历史记录或将历史记录保存在日志文件中。
所以我想在我的主窗口中有一个停靠小部件,它能够以多行方式和自动滚动方式显示我需要的消息,然后自动保存到日志文件中。
我的问题是如何在 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()