QT中TableView数据展示

QT中TableView数据展示

最近在学习QT,大量数据从数据库取出放入QT界面中展示,这时用到了tableView,一些简单的使用分享给大家。

创建数据模型

QStandardItemModel *model=new QStandardItemModel();

QStandardItemModel是Qt库中的一个类,它是QAbstractItemModel的一个子类。它可以用来存储和管理数据,并且可以通过Qt视图类(如QListView、QTreeView等)来显示这些数据。

设置表头信息并且绑定tableview

    QStandardItemModel *model=new QStandardItemModel();
    //设置表头
    model->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"年龄"<<"性别");
    //设置大小
    this->ui->tableView->resize(400,400);
    //绑定数据模型
    this->ui->tableView->setModel(model);
    //使得列宽可以通过鼠标变动
    this->ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive) 

自定义填充数据并分颜色展示

 for (int var = 0; var < 100; ++var) {
        QString age=QString::number(0+var);
        model->setItem(var,0,new QStandardItem("张三"));
        model->setItem(var,1,new QStandardItem(age));
        model->setItem(var,2,new QStandardItem("男"));
        //设置文本格式剧中
        model->item(var,0)->setTextAlignment(Qt::AlignCenter);
        model->item(var,2)->setTextAlignment(Qt::AlignCenter);
        model->item(var,1)->setTextAlignment(Qt::AlignCenter);
        //设置年龄为奇数的时候红色展示
        if( age.toInt()%2!=0){
            model->item(var,0)->setBackground(QBrush(Qt::red));
            model->item(var,2)->setBackground(QBrush(Qt::red));
            model->item(var,1)->setBackground(QBrush(Qt::red));
        }else{
             //设置年龄为偶数的时候绿色色展示
            model->item(var,0)->setBackground(QBrush(Qt::green));
            model->item(var,2)->setBackground(QBrush(Qt::green));
            model->item(var,1)->setBackground(QBrush(Qt::green));
        }
    }

数据展示

设置鼠标右击事件

  //设置点击触发局部菜单
    this->ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);
    //设置局部菜单事件栏
    connect(this->ui->tableView,&QTableView::customContextMenuRequested,this,&Widget::testRight);
void Widget::testRight(QPoint pos)
{
    Q_UNUSED(pos);
    QMenu menu;
    //添加右键菜单的选项
    menu.addAction("测试",this,&Widget::test);
    //显示menu菜单并设置其显示位置为鼠标位置
    menu.exec(QCursor::pos());
​
}

设置右击触发事件函数

效果展示

  • 14
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值