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::NoPen0无线
Qt::SolidLine1实线
Qt::DashLine2虚线
Qt::DotLine3点线
Qt::DashDotLine4虚点线
Qt::DashDotDotLine5虚点点线
Qt::CustomDashLine6自定义虚线

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

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

由上图可知,网格线的实现采用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。

  • 14
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值