我应该使用哪个qt小部件进行消息显示?

Dan*_*iel 18 qt

新手在这里.Qt状态栏每次只有一行,我无法跟踪历史记录或将历史记录保存在日志文件中.

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

我的问题是如何在Qt中这样做?谢谢

Fre*_*red 27

我正在寻找的是类似于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
}
Run Code Online (Sandbox Code Playgroud)

我留给你处理样板文件(打开和关闭文件,处理换行符等).

现在,只需MyLogWindow在您的Dock中放置一个实例QMainWindow,并在MyLogWindow::appendMessage()每次需要记录某些内容时调用它以显示,滚动并自动保存.

  • @Daniel:就我而言,很久以前就开始阅读手册和教程了.再加上超过10年的经验和专业的Qt工作,这提供了更深入的框架知识.Qt是开源的(QtCreator也是如此),所以如果你想知道它是如何工作的,那么打开源代码并深入研究. (3认同)
  • 4年前,我开始使用Qt一书"使用Qt4进行C++ GUI编程".我从头到尾阅读,然后我尝试了大量的Qt捆绑教程示例和演示.在那之后我开始真正编写我的工作代码,这是自我第一次拿起那本Qt书以来编写的20万行代码的订单.即使是现在我仍然发现自己在学习新东西.这是我在stackoverflow上查看每个Qt问题的一个原因. (3认同)