0

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

4

3 回答 3

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();
 }
于 2012-05-15T15:17:26.490 回答
0

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

于 2012-05-15T13:33:14.930 回答
0

如果你想拥有一些丰富的功能,比如搜索、过滤和排序,我什至会使用 QTreeWidget 将数据拆分为列。列表/树小部件会很好,因为您可以快速附加、快速删除。

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

于 2012-05-15T14:24:37.160 回答