Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
后端傳來的數(shù)據(jù),很大概率是一個List數(shù)組,我們必須用一個table組件,來打印這些數(shù)據(jù)。
在HTML中,table是常用組件之一,主要用來打印數(shù)組信息。
它的標簽定義為:
組件頂級標簽,用于定義組件,常用屬性:
align:定義內(nèi)部信息的排列,常使用center,表示中心。
border:定義單元之間的間隔,如果沒有,那么就不太好看。
組件的列頭標簽,相當于列名。
在th標簽里寫的信息,就是列名。
組件的數(shù)據(jù)標簽,數(shù)據(jù)在此展示。
一般來說,這里是動態(tài)展示的關(guān)鍵點。
屬性:
id:標識組件,方便在函數(shù)中修改數(shù)據(jù)。
代碼段、效果展示
<table align="center" border="1">
<th>用戶id</th>
<th>用戶名</th>
<th>用戶消費</th>
<tb><tr>
<td>1</td>
<td>小明</td>
<td>350</td>
</tr>
<tr>
<td>2</td>
<td>小李</td>
<td>202</td>
</tr>
<tr>
<td>3</td>
<td>南極人</td>
<td>3000</td>
</tr></tb> </table>
分割線
用戶id | 用戶名 | 用戶消費 |
1 | 小明 | 350 |
2 | 小李 | 202 |
3 | 南極人 | 3000 |
在下面的tb標簽中,加上id屬性
<tb id="name"></tb>
至此,我們就可以在script腳本中,使用document對象的方法getElementById,來得到tbody組件,旋即操作它。
假設(shè),在HTML定義的頁面中,有一按鈕btn,我們?yōu)槠湓O(shè)定點擊onclick事件。
<script>
var btn=document.getElementById("btn");
btn.onclick=function(){
// 寫調(diào)用后端的方法,我是用fetch演示的,也可以用ajax等。
fetch("http://127.0.0.1:8080/方法名", options).then(response=> {
// 處理返回值,如果不用驗證返回格式、返回數(shù)據(jù)量等信息,可以像我這樣寫
return response.json();
}).then(data=> {
// 調(diào)用真正的方法
showData(data);
});
// 展示數(shù)據(jù)
function showData(data) {
var tb=document.getElementById("table_body");
// 清空原數(shù)據(jù)【innerHTML很重要的屬性,待會講】
tb.innerHTML="";
for (var i=0; i < data.length; i++) {
const row=document.createElement('tr');
// innerHTML,里面存放的,就是這個組件中真正的HTML文本,不過要用``括號引注
row.innerHTML=`<td>${data[i].realData}</td>`;
tb.appendChild(row);
};
}</script>
原先的數(shù)據(jù)如下:
分割線
點擊后得到的數(shù)據(jù):
分割線
如果學習過Java,我們會知道類這個概念。
一個類里,會有屬性、方法兩種元素。
在瀏覽器中,一個組件,實際上可以理解為一個對象。
而innerHTML,就是這個對象的屬性之一。
innerHTML屬性,里面存放著HTML結(jié)構(gòu)的文本。
<head id="h1">
<meta charset="utf-8">
<title>你好</title>
</head>
head組件的innerHTML屬性,存放的值就是:
meta charset="utf-8">
<title>你好</title>
當修改innerHTML屬性時,相當于覆蓋原有數(shù)據(jù)。
我是蚊子碼農(nóng),如有補充或者疑問,歡迎在評論區(qū)留言。個人的知識體系可能沒有那么完善,希望各位多多指正,謝謝大家。
自從數(shù)據(jù)可以導出到xls,又有客戶提出了不同的需求,比如既然可以將數(shù)據(jù)導出到xls,那是否可以導出到pdf文件呢?因為xls打開以后用戶可以修改數(shù)據(jù)造假之類的,而pdf默認是不可編輯的,除非借助專業(yè)的工具,所以如果想要限定用戶導出數(shù)據(jù)不能被更改,那導出pdf是最佳選擇。寫程序往往都是這樣,一步步慢慢增加,隨著用戶需求的增加,程序量也越來越多,輪子組件也越來越多。往往客戶提需求的時候,一定要認真聆聽,尤其是一線用戶,實際使用的用戶,盡管有些不合理的需求,但是能滿足就盡量滿足,畢竟客戶就是上帝。
在Qt中要導出到pdf必須要用到qprinter類,相當于這些數(shù)據(jù)是打印到pdf的,所以確切點是叫打印到pdf文件,而不是導出數(shù)據(jù)到pdf,格式這塊由于采用的是打印,所以需要用html嵌套table表格的形式來打印,支持的格式就有限了,一般可以設(shè)置字體大小、顏色、邊框、對齊等,盡管是html,但是也是支持有限的html格式,這點要特別注意。現(xiàn)在的qt版本貌似單獨將pdf提煉出來成了獨立的模塊,功能更強大。
結(jié)構(gòu)體支持的參數(shù):
- 文件名稱
- 表名
- 主標題
- 副標題
- 字段名稱集合
- 字段寬度集合
- 內(nèi)容集合
- 行內(nèi)容分隔符
- 子內(nèi)容分隔符
- 邊框?qū)挾?/p>
- 校驗列
- 校驗類型
- 校驗值
- 檢驗顏色
- 最后列拉伸填充
- 橫向排版
- 紙張邊距
1. 組件同時集成了導出數(shù)據(jù)到csv、xls、pdf和打印數(shù)據(jù)。
2. 所有操作全部提供靜態(tài)方法無需new,數(shù)據(jù)和屬性等各種參數(shù)設(shè)置采用結(jié)構(gòu)體數(shù)據(jù),極為方便。
3. 同時支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等數(shù)據(jù)源。
4. 提供靜態(tài)方法直接傳入QTableView、QTableWidget控件,自動識別列名、列寬和數(shù)據(jù)內(nèi)容。
5. 每組功能都提供單獨的完整的示例,注釋詳細,非常適合各階段Qter程序員。
6. 原創(chuàng)導出數(shù)據(jù)機制,不依賴任何office組件或者操作系統(tǒng)等第三方庫,支持嵌入式linux。
7. 速度超快,9個字段10萬行數(shù)據(jù)只需要2秒鐘完成。
8. 只需要四個步驟即可開始急速導出海量數(shù)據(jù)比如100W條記錄到Excel。
9. 同時提供直接寫入數(shù)據(jù)接口和多線程寫入數(shù)據(jù)接口,不卡主界面。
10. 可設(shè)置標題、副標題、表名。
11. 可設(shè)置導出數(shù)據(jù)的字段名、列名、列寬。
12. 可設(shè)置末尾列自動拉伸填充,默認拉伸更美觀。
13. 可設(shè)置是否啟用校驗過濾數(shù)據(jù),啟用后符合規(guī)則的數(shù)據(jù)特殊顏色顯示。
14. 可指定校驗的列、校驗規(guī)則、校驗值、校驗值數(shù)據(jù)類型。
15. 校驗規(guī)則支持 精確等于==、大于>、大于等于>=、小于<、小于等于<=、不等于!=、包含contains。
16. 校驗值數(shù)據(jù)類型支持 整型int、浮點型float、雙精度型double,默認文本字符串類型。
17. 可設(shè)置隨機背景顏色及需要隨機背景色的列集合。
18. 支持分組輸出數(shù)據(jù),比如按照設(shè)備分組輸出數(shù)據(jù),方便查看。
19. 可設(shè)置csv分隔符、行內(nèi)容分隔符、子內(nèi)容分隔符。
20. 可設(shè)置邊框?qū)挾取⒆詣犹顢?shù)據(jù)類型,默認自動數(shù)據(jù)類型開啟。
21. 可設(shè)置是否開啟數(shù)據(jù)單元格樣式,默認不開啟,不開啟可以節(jié)約大概30%的文件體積。
22. 可設(shè)置橫向排版、紙張邊距等,比如導出到pdf以及打印數(shù)據(jù)。
23. 支持圖文混排導出數(shù)據(jù)到pdf以及打印數(shù)據(jù),自動分頁。
24. 靈活性超高,可自由更改源碼設(shè)置對齊方式、文字顏色、背景顏色等。
25. 支持任意excel表格軟件,包括但不限于excel2003-2021、wps、openoffice等。
26. 純Qt編寫,支持任意Qt版本+任意編譯器+任意系統(tǒng)。
1. 體驗地址:[https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A](https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A) 提取碼:o05q 文件名:bin_dataout.zip
2. 國內(nèi)站點:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
3. 國際站點:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
4. 個人主頁:[https://blog.csdn.net/feiyangqingyun](https://blog.csdn.net/feiyangqingyun)
5. 知乎主頁:[https://www.zhihu.com/people/feiyangqingyun/](https://www.zhihu.com/people/feiyangqingyun/)
在各種軟件系統(tǒng)中,數(shù)據(jù)打印也是常用的功能之一,一般來說會對查詢的數(shù)據(jù)結(jié)果導出到excel,還會對查詢的數(shù)據(jù)結(jié)果直接打印,在Qt中提供了打印機類QPrinter,在printsupport組件中,可以將文本內(nèi)容傳入QTextDocument,然后調(diào)用QTextDocument的print方法來打印數(shù)據(jù),QTextDocument支持html格式的文本,這樣拓展性就很大了,我們所知道的表格邊框顏色等,都是可以用html的語法來表示,不過貌似支持的html內(nèi)容不是很多,只是部分,樣式也是支持部分,但是也已經(jīng)夠用,常用的表格、邊框、顏色、邊距、字體等,都具備,那就ok了。
在上一篇文章中導出數(shù)據(jù)使用的xml格式的數(shù)據(jù),而導出pdf使用的就是打印類中的打印到pdf文件,用的就是html格式的數(shù)據(jù),同理,打印數(shù)據(jù)也是用這種格式,和導出到pdf唯一的區(qū)別就是導出到pdf設(shè)置輸出格式為PDF,printer.setOutputFormat(QPrinter::PdfFormat);然后設(shè)置輸出文件保存位置printer.setOutputFileName(fileName);其實組織的內(nèi)容是完全一樣的,據(jù)說新版的qt打算封裝一個獨立的QtPdf模塊,不知道下一個版本會不會放出來,這樣就可以跨平臺的操作編輯pdf文件了。
皮膚開源:[https://gitee.com/feiyangqingyun/QWidgetDemo](https://gitee.com/feiyangqingyun/QWidgetDemo) [https://github.com/feiyangqingyun/QWidgetDemo](https://github.com/feiyangqingyun/QWidgetDemo)
文件名稱:styledemo
體驗地址:[https://gitee.com/feiyangqingyun/QWidgetExe](https://gitee.com/feiyangqingyun/QWidgetExe) [https://github.com/feiyangqingyun/QWidgetExe](https://github.com/feiyangqingyun/QWidgetExe)
文件名稱:bin_sams.zip
1. 采集數(shù)據(jù)端口,支持串口端口+網(wǎng)絡(luò)端口,串口支持自由設(shè)置串口號+波特率,網(wǎng)絡(luò)支持自由設(shè)置IP地址+通訊端口,每個端口支持采集周期,默認1秒鐘一個地址,支持設(shè)置通訊超時次數(shù),默認3次,支持最大重連時間,用于重新讀取離線的設(shè)備。
2. 控制器信息,能夠添加控制器名稱,選擇控制器地址+控制器型號,設(shè)置該控制器下面的探測器數(shù)量。
3. 探測器信息,能夠添加位號,可自由選擇探測器型號,氣體種類,氣體符號,高報值,低報值,緩沖值,清零值,是否啟用,報警聲音,背景地圖,存儲周期,數(shù)值換算小數(shù)點位數(shù),報警延時時間,報警的類型(HH,LL,HL)等。
4. 控制器型號+探測器型號+氣體種類+氣體符號,均可自由配置。
5. 地圖支持導入和刪除,所有的探測器對應地圖位置可自由拖動保存。
6. 端口信息+控制器信息+探測器信息,支持導入導出+導出到excel+打印。
7. 運行記錄+報警記錄+用戶記錄,支持多條件組合查詢,比如時間段+控制器+探測器等,所有記錄支持導出到excel+打印。
8. 導出到excel的記錄支持所有excel+wps等表格文件版本,不依賴excel等軟件。
9. 可刪除指定時間范圍內(nèi)的數(shù)據(jù),支持自動清理早期數(shù)據(jù),設(shè)置最大保存記錄數(shù)。
10. 支持報警短信轉(zhuǎn)發(fā),支持多個接收手機號碼,可設(shè)定發(fā)送間隔,比如即時發(fā)送或者6個小時發(fā)送一次所有的報警信息,短信內(nèi)容過長,自動拆分多條短信。
11. 支持報警郵件轉(zhuǎn)發(fā),支持多個接收郵箱,可設(shè)定發(fā)送間隔,比如即時發(fā)送或者6個小時發(fā)送一次所有的報警信息,支持附件發(fā)送。
12. 高報顏色+低報顏色+正常顏色+0值顏色+曲線背景+曲線顏色等,都可以自由選擇。
13. 軟件的中文標題+英文標題+logo路徑+版權(quán)所有都可以自由設(shè)置。
14. 提供開關(guān)設(shè)置開機運行+報警聲音+自動登錄+記住密碼等。
15. 報警聲音可設(shè)置播放次數(shù),界面提供17種皮膚文件選擇。
16. 支持云端數(shù)據(jù)同步,可設(shè)置云端數(shù)據(jù)庫的信息,比如數(shù)據(jù)庫名稱,用戶名+密碼等。
17. 支持網(wǎng)絡(luò)轉(zhuǎn)發(fā)和網(wǎng)絡(luò)接收,網(wǎng)絡(luò)接收開啟后,軟件從udp接收數(shù)據(jù)進行解析。網(wǎng)絡(luò)轉(zhuǎn)發(fā)支持多個目標IP,這樣就實現(xiàn)了本地采集的軟件,自由將數(shù)據(jù)轉(zhuǎn)到客戶端,隨時查看探測器數(shù)據(jù)。
18. 自動記住用戶最后停留的界面+其他信息,重啟后自動應用。
19. 報警自動切換到對應的地圖,探測器按鈕閃爍。
20. 雙擊探測器圖標,可以進行回控。
21. 支持用戶權(quán)限管理,管理員+操作員兩大類,用戶登錄+用戶退出,可以記住密碼和自動登錄,超過三次報錯提示并關(guān)閉程序。
22. 支持四種監(jiān)控模式,設(shè)備面板監(jiān)控+地圖監(jiān)控+表格數(shù)據(jù)監(jiān)控+曲線數(shù)據(jù)監(jiān)控,可自由切換,四種同步應用。
23. 支持報警繼電器聯(lián)動,一個位號可以跨串口聯(lián)動多個模塊和繼電器號,支持多對多。
24. 本地數(shù)據(jù)存儲支持sqlite+mysql,支持遠程數(shù)據(jù)同步到云端數(shù)據(jù)庫。自動重連。
25. 本地設(shè)備采集到的數(shù)據(jù)實時上傳到云端,以便手機APP或者web等其他方式提取。
26. 支持兩種數(shù)據(jù)源,一種是串口和網(wǎng)絡(luò)通過協(xié)議采集設(shè)備數(shù)據(jù),一種是數(shù)據(jù)庫采集。數(shù)據(jù)庫采集模式可以作為通用的系統(tǒng)使用。
27. 自帶設(shè)備模擬工具,支持16個設(shè)備數(shù)據(jù)模擬,同時還帶數(shù)據(jù)庫數(shù)據(jù)模擬,以便在沒有設(shè)備的時候測試數(shù)據(jù)。
28. 默認通信協(xié)議采用modbus協(xié)議,后期增加mqtt等物聯(lián)網(wǎng)協(xié)議的支持,做成通用系統(tǒng)。
29. 支持所有windows操作系統(tǒng)+linux操作系統(tǒng)和其他操作系統(tǒng)。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。