Qt中的日志列表
我想知道怎样才能像显示一些日志一样列出项目的数量。 实际上,我从网络上收到了一些数据包,我想在GUI上为用户显示一些日志。Qt中的日志列表,qt,list,Qt,List,我想知道怎样才能像显示一些日志一样列出项目的数量。 实际上,我从网络上收到了一些数据包,我想在GUI上为用户显示一些日志。 目前我选择了列表小部件,但我想知道是否还有其他方法可以做到这一点?猜测您的目的只是为了登录,您可以使用qDebug(),因为它是最简单、最容易登录的工具。如果您想拥有一些丰富的功能,如搜索,过滤和排序我甚至会使用QTreeWidget将数据拆分为列。列表/树小部件会很好,因为您有快速附加、快速删除功能 有些人使用文本小部件来做这类事情,但当有大量数据时,它的性能更差。我使用
目前我选择了列表小部件,但我想知道是否还有其他方法可以做到这一点?猜测您的目的只是为了登录,您可以使用
qDebug()
,因为它是最简单、最容易登录的工具。如果您想拥有一些丰富的功能,如搜索,过滤和排序我甚至会使用QTreeWidget将数据拆分为列。列表/树小部件会很好,因为您有快速附加、快速删除功能
有些人使用文本小部件来做这类事情,但当有大量数据时,它的性能更差。我使用文本小部件,然后根据一些命令行开关重定向到GUI、控制台或日志文件。如果您有很多消息,您可能希望登录到一个文件,但是对于短时间的行/项突发,您可以登录到一个自定义的,可能还有一个QListView
基本上,我已经在参考链接和
#包括
#包括
#包括
void myMessageOutput(QtMsgType类型,const char*msg)
{
开关(类型){
案例QtDebugMsg:
fprintf(stderr,“调试:%s\n”,msg);
打破
案例QtWarningMsg:
fprintf(stderr,“警告:%s\n”,msg);
打破
案例QTSG:
fprintf(标准,“关键:%s\n”,消息);
打破
案例QTALMSG:
fprintf(stderr,“致命:%s\n”,msg);
中止();
}
}
int main(int argc,字符**argv)
{
qInstallMsgHandler(myMessageOutput);
QApplication应用程序(argc、argv);
...
返回app.exec();
}
这也可以使用,但我想知道在Qt上为用户在GUI上显示登录到它的最佳小部件是什么。因此,对于大量数据,树小部件的性能要比文本浏览器好得多?基于模型的数据存储比文本浏览器的性能要好得多。后两种方法对于日志来说完全没有用处,并且在过去一两年中似乎出现了未解决的性能倒退。它们只有在以人的速度进行修改时才有用。经常更改它们的内容是不可能的。我最终编写了一个定制的LogView类,但使用模型和视图同样可行。
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>
void myMessageOutput(QtMsgType type, const char *msg)
{
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s\n", msg);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s\n", msg);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s\n", msg);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s\n", msg);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}