Qt 表格实时显示数据的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 表格实时显示数据的问题?相关的知识,希望对你有一定的参考价值。

1. 软件功能为串口接收数据 解析后显示到表格中,数据量很大一帧10字节,最快每秒几百帧,显示为一帧一行。
2. 使用tableView 或者 table widget都不能很好的快速刷新,界面比较卡顿。

请问Qt 大佬,怎么处理这种高速数据的显示,保证界面不卡顿,刷新也比较及时的问题。

一、EXCEL工作表中数据显示不完整。例如显示3.70E14,类似的情况如何解决...
1、首先,打开需要操作的excel,可以看到excel表格内容是没有显示的。

2、接着,找具栏中的“视图”按钮,并点击打开。

3、接着,在弹出的页面击“取消隐的选项。

4、然后,会弹出“取消隐藏”的提示栏,选择需要取消隐藏的excel表格后,点击确定。

5、这样之前没有内容的excel就成功显示内容了。

二、excel表格打开却不显示内容是怎么回事?
有两种可能,一是单的不够,把单元格的列宽拉开一点.另一可能是没有设置数字,你要改变的excel数据,单击后键,选"设置单元格格式""数字"_选定"数值"然后在看边有数位数的地方,更改你需要的数值,进行调改,再确可.如图所示.

1、excel打开后不显示表格内容
①右击excel,打开方式,选择程选中excel程序,在下面勾上“始终使用选择的程序打开这种文件”的钩打开后 ,菜单栏--工具--选项--常规--去掉“忽略其他应用程序”的勾 ,以后就正常打开了。

②打开excel,窗口——取消隐藏。

③把C:\Documents and Settings\Administrator\Application Data\Microsoft\Excel文件夹中的EXCEL11.XLB文件删除试试。

2、在excel表格输入公式后数据显示不出来怎么办
打开excel后,发现工作表区域是灰色的,并不显示表格,是设置因素造成的,造成看不到表格及内容,无法进行操作。

解决方法:点击文档的菜单选项,在菜单选项到视图按钮,然后在其弹出的窗口下找到取消隐藏选项。然后在弹出的窗口中选择要取消隐藏的工作簿,点击确定之后文本文档恢复正常。

打开excel(工作表区域是灰色的,并不显示表格)。
点击excel中的“视图”。
点击视图下方的“取消隐藏窗口”。
弹出的窗口中点击确定即可。
点击确定后显示为正常的表格形式。
注意事项:

●看到隐藏后是灰色的,同时蓝色和黑色也是同一个问题,在选项设置中可以改变背景颜色。

●在显示的选项中点击“隐藏和取消隐藏”点击“隐藏工作表”,工作表就会被隐藏。

3、Excel在原有数据表格上加入新数据之后为什么不显示“0”值?
①不显示“0”值,分为两种,第一种是整个工作表都不显示“0”值,另一种是,部分单元格不显示“0”值。两情情况分别有不同的解决方案,具体的操作,请往下看。

②在Excel设置中,取消选择“高级”——“在具有零值的单元格中显示零”(前面复选框中,勾就可以了)。
参考技术A 考虑下分页展示,每页只展示若干行数据

Qt 文本浏览器不实时显示

【中文标题】Qt 文本浏览器不实时显示【英文标题】:Qt text browser not displays in real time 【发布时间】:2014-08-09 08:52:20 【问题描述】:

我写了一个函数来计算一些值,并使用append在每次计算值时将它们写入textBrowser

我想要的是每次append执行时,数据同时显示在textBrowser中。

但是,当函数结束时,所有数据都会立即显示。不是一一的。

另外,我有一个按钮。我希望它在推送时更改其文本,并在其功能完成时再次更改。于是我写了:

void MainWindow::on_btn_clicked()
    ui->btn->setText("Running...");
    //some codes
    ui->btn->setText("Reset");

但它只会在 clicked 函数结束时将按钮的文本更改为“重置”。

我认为这两个问题可能是相关的,但我找不到解决方案。

【问题讨论】:

【参考方案1】:

在控件返回事件循环之前,GUI 不会更新。因此,当附加到文本浏览器时,一旦执行主事件循环,它们就会全部更新。这也适用于设置按钮的文本。当调用on_btn_clicked() 时,按钮的文本直到函数完成才会更新。

如果你有一些需要长时间处理的代码,那么你不应该把它放在主线程中。它应该在另一个线程中完成,该线程通过信号和槽与主线程交互,以便报告一些进度或更新 GUI 元素。

【讨论】:

【参考方案2】:

您需要了解程序中发生了什么。

首先,看看Threading Basics。之后,您可以从Multithreading Technologies in Qt 中选择您想要的方法。

简而言之,您的问题是您在主线程中进行了一些阻塞的长期计算。为避免这种情况,您必须在单独的线程中提供所有计算。以下是您问题的充分答案:https://***.com/a/1386160/867349。

最简单但不好的方法是将QCoreApplication::processEvents() 例如放在//some codes 的循环中。希望您能找到更好的方法,例如 QtCuncurrentRun 或在上面的链接中准备工作线程

【讨论】:

以上是关于Qt 表格实时显示数据的问题?的主要内容,如果未能解决你的问题,请参考以下文章

QT QTableView控件 实时刷新显示

Qt 添加表格小部件项目的问题

QT自定义QTextEdit实现大数据的实时刷新显示

QT如何实现QSqltablemodel实时更新数据库,并在tableview中实时显示,

在 Python 中使用 Qt Designer 接口实时读取串行数据

Qt编写视频监控系统75-计算实时码率并显示