使文本像对话框Qt中的终端一样滚动?

时间:2019-01-17 22:44:30

标签: qt

我尝试了QListWidget,但它似乎一次显示所有内容,而不是像终端机那样实时单独打印每一行。我还尝试过使用scrollToBottom()函数,它仍然可以一口气将所有内容添加到屏幕上。我还尝试使用线程,发生了同样的事情。

我有一个主窗口和一个打开对话框的按钮。我希望滚动文本出现在对话框中(在列表视图小部件中或所需的任何东西中)。不断不断的字符串流,例如“ 00 1A 2B 3C H6 77 66”被发送到ui窗口(一个接一个地打印),看看它实时滚动。滚动条被隐藏。该窗口仅用于查看数据。

我不确定带有QAbstractItemList的QListView是否可以工作。我一直在寻找答案几天。这里的所有帖子似乎都没有回答我的问题。

有人知道我如何实现这种效果吗?谢谢。

2 个答案:

答案 0 :(得分:0)

每当生成文本时将文本追加到QPlainTextEdit并调用其scrollToBottom方法将产生通常的“ log” /终端效果;列表控件相同。

如果这样做,但是看到所有文本仅在操作结束时一起出现,您确定您没有阻塞UI线程,那么UI才有机会仅在冗长的操作结束时重绘吗?

如果是这种情况,则应将长时间操作移至一个单独的线程,并使用以下命令将日志行传递到UI线程:排队的连接(您无法从QApplication所在的线程以外的任何线程直接访问窗口小部件。)

答案 1 :(得分:0)

jquery-ajax