Qt中的日志列表

时间:2012-05-15 12:48:39

标签: qt list

我想知道如何列出项目数量,比如我们正在显示一些日志。 实际上我收到了来自网络的一些数据包,我想在GUI上为用户显示某种日志。 目前我选择了List Widget,但我有兴趣知道是否有其他方法可以这样做?

3 个答案:

答案 0 :(得分:1)

我使用qInstallMsgHandler然后根据某些命令行开关重定向到GUI,控制台或日志文件。如果你有很多消息,你可能想要记录到一个文件,但是对于行/项的短连发,你可以登录到自定义QStringListModel,也可以使用QListView。

基本上我已经扩展了引用链接中的示例和SO Question

 #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();
 }

答案 1 :(得分:0)

猜测您的目的仅用于记录,您可以使用qDebug(),因为它是最简单和最容易记录的。

答案 2 :(得分:0)

如果你想拥有搜索,过滤和排序等丰富功能,我甚至会使用QTreeWidget将数据拆分成列。 List / Tree Widget会很好,因为你有快速追加,快速删除。

有些人使用文本小部件来做这件事,但是当有大量数据时,它的性能会更差。