天天看點

Qt之QTableView的使用

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();
           

效果如下:

Qt之QTableView的使用

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之QTableView的使用

由上圖可知,網格線的實作采用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。

繼續閱讀