表格QTableWidget
QTableWidget
是一個表格控件,行和列交匯形成的每個單元格,是一個 QTableWidgetItem
對象。
1. QTableWidget屬性
QTableWidget
的屬性只有兩個:
屬性 說明 rowCount 當前行的個數。 columnCount 當前列的個數。
2. QTableWidget信號
信號 說明 cellClicked(int row, int column) 點擊單元格時觸發。 cellDoubleClicked(int row, int column) 雙擊單元格時觸發。 cellEntered(int row, int column) 鼠標進入單元格時觸發。 currentCellChanged(int row, int column,int previousRow, int previousColumn) 選中不同單元格時觸發。
3. QTableWidget方法
方法 說明 item(int row, int column) 根據行數列數獲取單元格的 QTableWidgetItem*
。 setItem(int row, int column, QTableWidgetItem*) 根據行數列數設置單元格中的元素。 currentItem() 返回被選中的元素 QTableWidgetItem*
。 currentRow() 返回被選中的是第幾行。 currentColumn() 返回被選中的是第幾列。 row(QTableWidgetItem*) 獲取指定 item 是第幾行。 column(QTableWidgetItem*) 獲取指定 item 是第幾列。 rowCount() 獲取行數。 columnCount() 獲取列數。 insertRow(int row) 在第 row
行處插入新行(新行變為第 row
行)。 insertColumn(int column) 在第 column
列插入新列(新列變為第 column
列)。 removeRow(int row) 刪除第 row
行。 removeColumn(int column) 刪除第 column
列。 setHorizontalHeaderItem(int column, QTableWidget*) 設置指定列的表頭。 setVerticalHeaderItem(int row, QTableWidget*) 設置指定行的表頭。
4. QTableWidgetItem方法
方法 說明 row() 獲取當前是第幾行。 column() 獲取當前是第幾列。 setText(const QString&) 設置文本。 setTextAlignment(int) 設置文本對齊。 setIcon(const QIcon&) 設置圖標。 setSelected(bool) 設置能否被選中。 setSizeHints(const QSize&) 設置尺寸。 setFont(const QFont&) 設置字體。
5. 使用QTableWidget制作一個表格編輯器
表格編輯器的大部分功能 Qt 都已經提供了,我們只需要制作幾個添加行首、列首之類的接口即可:
# include "widget.h"
# include "ui_widget.h" Widget :: Widget ( QWidget * parent) : QWidget ( parent) , ui ( new Ui:: Widget)
{ ui-> setupUi ( this ) ; ui-> lineEdit-> setPlaceholderText ( "輸入新增的列名" ) ;
} Widget :: ~ Widget ( )
{ delete ui;
} void Widget :: on_pushButton_addRow_clicked ( )
{ int row = ui-> tableWidget-> rowCount ( ) ; ui-> tableWidget-> insertRow ( row) ;
} void Widget :: on_pushButton_addColumn_clicked ( )
{ QString content= ui-> lineEdit-> text ( ) ; if ( content. isEmpty ( ) ) { return ; } int column = ui-> tableWidget-> columnCount ( ) ; ui-> tableWidget-> insertColumn ( column) ; ui-> tableWidget-> setHorizontalHeaderItem ( column, new QTableWidgetItem ( content) ) ; } void Widget :: on_pushButton_deleteRow_clicked ( )
{ int curRow= ui-> tableWidget-> currentRow ( ) ; ui-> tableWidget-> removeRow ( curRow) ;
} void Widget :: on_pushButton_deleteColumn_clicked ( )
{ int curColumn= ui-> tableWidget-> currentColumn ( ) ; ui-> tableWidget-> removeremoveColumn ( curColumn) ;
}