当前位置:首页 » 数据仓库 » qt实时显示数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

qt实时显示数据库

发布时间: 2022-10-18 22:57:50

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

在QT的widget中用tableview显示sqlite数据库表中的内容。
假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据。
首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码:
QsqDatabase db = QsqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
if(!db.open())
{
//错误处理
}
static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview);
model->setQuery(QString("select * from table"));
model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号"));
model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"));
model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄"));
ui->tableview->setModel(model);
db->close();
这样之后,table表里的内容就会显示到tableview中了。

② QT连接数据库并在dialog中显示数据表的内容怎么做

这个网上都搜得到,书上也有。 我提关键几点:1.连接数据库时,要在你这个工程的 .pro文件里 最后添上 QT +=sql
2.连接数据库时,你连接用的用户名要吧权限设置高,否者,数据写不进去

把数据读出来方法比较多,有QT自带的模板可用,你可以去借点书系统的看下就知道了

③ 在Linux下的Qt中操作数据库,把内容插入数据库,然后在ui界面上显示出我插入的数据库

最基本实现:
按照lindEdit里面输入的内容查找数据库并显示出来。
最高实现目标:
用了个combobox里面有几个属性都是数据库里面有的,先选择相应的属性,再输入对应的内容到linEdit,按照lindEdit里面输入的内容查找数据库并显示出来。

④ QT多线程查询数据库显示到tablewidget里面

1、线程内注册与连接数据库的竞争问题
文档上对多线程下数据库应用的注意事项写的很简明,一个线程创建的 QSqlDatabase 对象和 查出来的 QSqlQuery 对象只能给本线程用(注意,是对象,不是数据库连接本身,连接本身用名字可以多线程使用),其他情况是“不支持的”。在一个需要有几个线程并发访问不同数据库的应用中,我首先试图在各个线程的起始分别以不同的名称调用 addDatabase / database 、open,但是程序偶然会崩溃,跟踪后发现,虽然Qt 声称很多方法是“线程安全”的,但是几个方法串起来,就出问题了。Qt 会动态的加载数据库的plugin, 加载 plug in 的部分,涉及到对本地库文件的管理,这一部分,出现了竞争。于是,很自然的想到在初始连接部分设置 Mutex 保护,从 addDatabase / database到 open 的部分,要保证其原子性,问题再也没有出现。

2、数据库连接意外断裂后,恢复连接的问题
在MFC 中,一旦中途TCP连接断裂,直接重新 Open 就可以了。在Qt 里,这一招不好使了。即便 调用了 close ,再次open 也是不行的。处理方法:
在检测到问题出现后,关闭连接,并 removeDatabase; 而后,不要立刻 addDatabase, 反而是要回到该连接所在的事件循环。没有详细跟源码,很可能在 removeDatabase 后的事件循环中,Qt 内部做了一些释放操作。 怎么办呢, 可以设置一个恢复定时器,比如 1分钟,重新 addDatabase,就可以啦。如果心急的话,直接显式调用processEvent() 方法强制循环。
在多线程下,注意1中的问题,需要 Mutex保护。

3、数据库插件的依赖性问题
在 Windows 下,有时我们的机器上按了好几个 Qt 版本,PATH里索性神马也不设置,依赖开发环境的继承环境适应不同的版本。这有两个问题。一是发布程序的时候,数据库驱动依赖的dll 也要与可执行文件在同一路径下发布。比如 mysql 的 dll, PostgreSQL 的依赖等。二是在集成开发环境中,这些依赖也要位于执行档文件夹下。否则,会造成虽然可以枚举到可用驱动,但是死活连接不上。调试一下就知道,原来是在路径中找不到依赖项,导致dll加载失败哦!

⑤ 各位QT大侠: QT多线程编程的时候,怎么把次线程处理好的数据实时的显示到ui上去

Qt上要求界面处理一般需要在主线程中完成。
所以最好把次线程中的数据缓冲区放到主线程中:
1、一种方式可以进行数据拷贝,但肯定效率低了。
2、另一种方式是直接将数据缓冲区放到主线程中,然后在主线程中处理读取数据槽。但这样可能主线程压力大,机器配置不能太低。
3、直接在主线程中访问次线程的数据并刷新界面,不过这处理起来复杂(需要手工同步),容易出错。
4、将TableWidget指针传入次线程中,直接在次线程中对其进行操作并发送刷新信号。这种方式未经验证,感觉可能性不大:一方面指针容易走空,另一方面就是前面说的限制在主线程中对接面进行处理。不过所说的“处理”可能并不包括刷新数据吧。
期待楼主进行验证,并展示结果。(或者楼主可以将UDP试验项目发送给我,让我试试,QQ:956693152,谢谢!)

⑥ 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设置中,取消选择“高级”——“在具有零值的单元格中显示零”(前面复选框中,勾就可以了)。