QT 學習筆記 – QTableView 使用

Table 在列出資料概要資訊時非常有用,可以列出重要的欄位,又可以列出較多的資料。可以選擇單一 Cell, 整個 Row 或者是整個 Column,對於操作還蠻有實用性的,本文就介紹 QT 的 Table 元件的一些用法。

加入 QTableView 與設定

QT 有兩種 Table 元件,一個是 QTableWidget,另一個是 QTableView,本文使用的是 QTableView,將其從元件列拉到主視窗中,並將其命名為tbl。

產生 QTableView

接著點一下該元件,從右邊的屬性視窗修改「SelectionMode」成「MultiSelection」(請改成 Exteneded Selection,較符合一般使用習慣),「SelectionBehavior」設為「SelectRows」。

設定選擇模式

設定 Table 欄位

在 constructor 內加入欄位個數與文字設定

加如程式後,重新執行,結果看起來會如下。

加入欄位標頭

加入資料

在畫面上加入一個 button,並在其 click slot上加入以下程式,以達成加入資料的功能。

加入資料用法上還蠻直覺的,每一個 cell 都是一個 QStandardItem 物件,在新增 row 時,直接用 setItem() 設置其所用的 QStandardItem。QStandardItem 的內容可以在一開始就指定,或在後來用 setText() 來指定。程式的效果如下,可以進行 Multi Selection。

顯示選取的資料

在畫面上加入一個 button,並在其 click slot上加入以下程式,以顯示已選取的項目列表。

上面主要是靠 model->index() 來取得指定 row 與 column 的資料,並指定傳回 QModelIndex 型態。接著再以 model->data() 來取得該欄位,再轉成 int。或簡單一點,也可以直接取得 QStandardItem 轉成 int 即可。執行效果如下

清除所有資料

在畫面上加入一個 button,並在其 click slot上加入以下程式,以刪除所有的資料。

如果只是刪除所有項目,其實只要呼叫 model->clear() 即可。這邊我們亦展示如何以row為單位來刪除,這個例子比較能適用到不同的應用。這裡是由後面的列開始刪除,因為回圈的最大值一開始就決定了,若i從0開始刪,每次刪掉一行,table的大小便會減少,到最後 i 會超過 table  的大小,而導致程式錯誤。

結語

Table 是個好使好用的東西,觀看或應用都很方便,學起來後可以大大的增加設定資料方便性。

 

Leave a Reply