Qt之QTableView的使用

QTableView类实现表格视图,QTableView的数据由继承QAbstractItemModel的子类models来提供。
1.使得QTableView的大小和主窗口大小一致

    //获得主窗口的大小
    int width = this->width();
    int height = this->height();

    //调整tableView窗口大小和主窗口一致
    ui->tableView->resize(width,height);
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.表格网格线的显示与取消

    //背景网格线设置
    //显示
    ui->tableView->setShowGrid(true);
    //取消
    //ui->tableView->setShowGrid(false);
    
    
  • 1
  • 2
  • 3
  • 4
  • 5

3.网格线画笔

    //网格背景画笔
    //ui->tableView->setGridStyle(Qt::DashLine);
    ui->tableView->setGridStyle(Qt::DotLine);
    
    
  • 1
  • 2
  • 3

画笔的种类如下:










常量 描述
Qt::NoPen 0 无线
Qt::SolidLine 1 实线
Qt::DashLine 2 虚线
Qt::DotLine 3 点线
Qt::DashDotLine 4 虚点线
Qt::DashDotDotLine 5 虚点点线
Qt::CustomDashLine 6 自定义虚线

4.排序功能,设置了排序功能为true,就会开启列排序功能

    //排序功能
    ui->tableView->setSortingEnabled(true);
    
    
  • 1
  • 2

5.设置列表头
默认的表头都是按数字顺序自增的,我们可以设置表头为自己的格式,这时我们就要使用到model了
比如,我们要实现自己的表头

    QStandardItemModel* model = new QStandardItemModel();
    QStringList labels = QObject::trUtf8("频率,功率,误差").simplified().split(",");
    model->setHorizontalHeaderLabels(labels);
    ui->tableView->setModel(model);
    ui->tableView->show();
    
    
  • 1
  • 2
  • 3
  • 4
  • 5

效果如下:
这里写图片描述

6.实现各表内容的填充

    QStandardItemModel* model = new QStandardItemModel();
    QStringList labels = QObject::trUtf8("频率,功率,误差").simplified().split(",");
    model->setHorizontalHeaderLabels(labels);

    //定义item
    QStandardItem* item = 0;
    for(int i = 0;i < 10;i++){
        item = new QStandardItem(QString("%1").arg(i));
        model->setItem(i,0,item);
        item = new QStandardItem(QString("%1").arg(i*2));
        model->setItem(i,1,item);
        item = new QStandardItem(QString("%1").arg(i*3));
        model->setItem(i,2,item);
    }
    ui->tableView->setModel(model);
    ui->tableView->show();
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实现效果如下:
这里写图片描述

由上图可知,网格线的实现采用Qt::DotLine,但是内容区的字体颜色为什么是红色的呢?这就是下一个所要说的

7.数据清除

model->clear();
    
    
  • 1

8.Qt中关于CSS样式的使用

ui->tableView->setStyleSheet("QTableView { border: none;"
                                 "selection-background-color: #8EDE21;"
                                 "color: red}");
    
    
  • 1
  • 2
  • 3

其中的“color:red”即是设置表格内容的字体颜色
“border: none”表示表格无边框
“selection-background-color: #8EDE21”表示选中单元格背景色的设置。
其他样式表可以参看HTML中的CSS。

转载自:https://blog.csdn.net/zhuyunfei/article/details/51111558

猜你喜欢

转载自blog.csdn.net/u011731378/article/details/80350115
今日推荐