QTableView類實作表格視圖,QTableView的資料由繼承QAbstractItemModel的子類models來提供。
1.使得QTableView的大小和主視窗大小一緻
//獲得主視窗的大小
int width = this->width();
int height = this->height();
//調整tableView視窗大小和主視窗一緻
ui->tableView->resize(width,height);
2.表格網格線的顯示與取消
//背景網格線設定
//顯示
ui->tableView->setShowGrid(true);
//取消
//ui->tableView->setShowGrid(false);
3.網格線畫筆
//網格背景畫筆
//ui->tableView->setGridStyle(Qt::DashLine);
ui->tableView->setGridStyle(Qt::DotLine);
畫筆的種類如下:
常量 | 值 | 描述 |
Qt::NoPen | 無線 | |
Qt::SolidLine | 1 | 實線 |
Qt::DashLine | 2 | 虛線 |
Qt::DotLine | 3 | 點線 |
Qt::DashDotLine | 4 | 虛點線 |
Qt::DashDotDotLine | 5 | 虛點點線 |
Qt::CustomDashLine | 6 | 自定義虛線 |
4.排序功能,設定了排序功能為true,就會開啟列排序功能
//排序功能
ui->tableView->setSortingEnabled(true);
5.設定清單頭
預設的表頭都是按數字順序自增的,我們可以設定表頭為自己的格式,這時我們就要使用到model了
比如,我們要實作自己的表頭
QStandardItemModel* model = new QStandardItemModel();
QStringList labels = QObject::trUtf8("頻率,功率,誤差").simplified().split(",");
model->setHorizontalHeaderLabels(labels);
ui->tableView->setModel(model);
ui->tableView->show();
效果如下:
6.實作各表内容的填充
QStandardItemModel* model = new QStandardItemModel();
QStringList labels = QObject::trUtf8("頻率,功率,誤差").simplified().split(",");
model->setHorizontalHeaderLabels(labels);
//定義item
QStandardItem* item = ;
for(int i = ;i < ;i++){
item = new QStandardItem(QString("%1").arg(i));
model->setItem(i,,item);
item = new QStandardItem(QString("%1").arg(i*));
model->setItem(i,,item);
item = new QStandardItem(QString("%1").arg(i*));
model->setItem(i,,item);
}
ui->tableView->setModel(model);
ui->tableView->show();
實作效果如下:
由上圖可知,網格線的實作采用Qt::DotLine,但是内容區的字型顔色為什麼是紅色的呢?這就是下一個所要說的
7.資料清除
model->clear();
8.Qt中關于CSS樣式的使用
ui->tableView->setStyleSheet("QTableView { border: none;"
"selection-background-color: #8EDE21;"
"color: red}");
其中的“color:red”即是設定表格内容的字型顔色
“border: none”表示表格無邊框
“selection-background-color: #8EDE21”表示選中單元格背景色的設定。
其他樣式表可以參看HTML中的CSS。