當前位置:首頁 » 數據倉庫 » 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設置中,取消選擇「高級」——「在具有零值的單元格中顯示零」(前面復選框中,勾就可以了)。