C++中的Qt QTableView详解

目录
  • 一.常用接口
    • 1.设置model,添加model数据
    • 2.节点可以带一些数据
    • 3.一些别的常用设置
    • 4.自动调整行高和列宽
    • 5.设置表格不可编辑
    • 6.设置行列头不显示
  • 二.设置item属性
  • 三.右键弹出菜单
  • 四.源码

一.常用接口

1.设置model,添加model数据

    model = new QStandardItemModel(this);
    model->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
    QStandardItem *item00 = new QStandardItem("张三");
    QStandardItem *item10 = new QStandardItem("张四");
    QStandardItem *item20 = new QStandardItem("张五");
    QStandardItem *item01 = new QStandardItem("男");
    QStandardItem *item11 = new QStandardItem("女");
    QStandardItem *item21 = new QStandardItem("男");
    QStandardItem *item02 = new QStandardItem("15");
    QStandardItem *item12 = new QStandardItem("14");
    QStandardItem *item22 = new QStandardItem("16");
    model->setItem(0,0,item00);
    model->setItem(1,0,item10);
    model->setItem(2,0,item20);
    model->setItem(0,1,item01);
    model->setItem(1,1,item11);
    model->setItem(2,1,item21);
    model->setItem(0,2,item02);
    model->setItem(1,2,item12);
    model->setItem(2,2,item22);
    ui->tableView->setModel(model);

2.节点可以带一些数据

    QStandardItem *item1 = new QStandardItem("张三");
    //item1->setData("name");
    //item1->setIcon();
    //item1->setFlags();
 

3.一些别的常用设置

    //去除选中虚线框
    ui->tableView->setFocusPolicy(Qt::NoFocus);

    //设置列宽
    ui->tableView->setColumnWidth(0,100);
    ui->tableView->setColumnWidth(1,100);
    ui->tableView->setColumnWidth(2,200);
//    //需要打开右键菜单属性,则必须设置
//    ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    //设置最后一栏自适应长度
    ui->tableView->horizontalHeader()->setStretchLastSection(true);
    //设置列内容自适应宽度
    //ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
    //开启交替行背景色,在设置style为交替颜色时必须开启
    //ui->tableView->setAlternatingRowColors(true);
    //设置整行选中
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    //设置选择多行,按ctrl键
    ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);

4.自动调整行高和列宽

resizeColumnsToContents()://自动调整所有列的宽度,以适应其内容。
resizeColumnToContents(int column)://自动调整列号为 co/www 的列的宽度。
resizeRowsToContents()://自动调整所有行的高度,以适应其内容。
resizeRowToContents(int row)://自动调整行号为 raw 的行的高度。

5.设置表格不可编辑

ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

6.设置行列头不显示

    ui->tableView->horizontalHeader()->setVisible(false);//是否显示水平表头
    ui->tableView->verticalHeader()->setVisible(false);//是否显示垂直表头

二.设置item属性

    QStandardItem *item01 = new QStandardItem("男");
    QFont font = item01->font();
    //设置为粗体
    font.setBold(true);
    //字体大小
    font.setPointSize(12);
    //设置字体
    item01->setFont(font);
    //设置字体颜色
    item01->setForeground(QBrush(QColor(255, 0, 0)));
    //文本对齐格式
    item01->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

三.右键弹出菜单

    //打开右键菜单属性
    ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);

    //右键菜单
    menu = new QMenu(ui->tableView);
    menu->addAction("添加");
    menu->addAction("删除");
    //响应右键菜单信号槽
    connect(ui->tableView,&QTableView::customContextMenuRequested,
          this,&Widget::slotCustomContextMenuRequested);
    void Widget::slotCustomContextMenuRequested(const QPoint &pos)
    {
        QPoint p;
        p.setX(pos.x());
        p.setY(pos.y() + menu->height() / 2 );
        menu->exec(ui->tableView->mapToGlobal(p));
    }

四.源码

QTableView详解-C++文档类资源

到此这篇关于Qt QTableView详解的文章就介绍到这了,更多相关Qt QTableView详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt GUI图形图像开发之QT表格控件QTableView详细使用方法与实例

    QT表格控件QTableView简介 ​ 表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,不能单独显示出来.V(view)是指QTableView视图,要来显示数据模型,C(controllor)控制在Qt中被弱化,与View合并到一起. QTableView简单使用实例 ​ QStandardItmeModel表格的数据模型,那么这个模型需要填上每一行每

  • Qt实现导出QTableWidget/QTableView数据

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 本组件的初衷就是造一个轮子,让数据导入导出用法极致简单,几个行数几行代码搞定它,适用大部分的应用场景,这也是本组件和qtxls最大的区别,qtxls的目标是大而全,提供各种xls的接口,至于如何组织导出的数据,那需要程序员自己去处理,这就避免不了需要调用很多函数代码,而我们往往入门的程序员用起来没那么方便,比如很多人其实就想将现在QTableWidget或者QTableView中的数据导出,也不想去研究如何组织数据,

  • C++中的Qt QTableView详解

    目录 一.常用接口 1.设置model,添加model数据 2.节点可以带一些数据 3.一些别的常用设置 4.自动调整行高和列宽 5.设置表格不可编辑 6.设置行列头不显示 二.设置item属性 三.右键弹出菜单 四.源码 一.常用接口 1.设置model,添加model数据 model = new QStandardItemModel(this); model->setHorizontalHeaderLabels(QStringList()<<"姓名"<<

  • python 中xpath爬虫实例详解

    案例一: 某套图网站,套图以封面形式展现在页面,需要依次点击套图,点击广告盘链接,最后到达百度网盘展示页面. 这一过程通过爬虫来实现,收集百度网盘地址和提取码,采用xpath爬虫技术 1.首先分析图片列表页,该页按照更新先后顺序暂时套图封面,查看HTML结构.每一组"li"对应一组套图.属性href后面即为套图的内页地址(即广告盘链接页).所以,我们先得获取列表页内所有的内页地址(即广告盘链接页) 代码如下: import requests 倒入requests库 from lxml

  • pyqt5中动画的使用详解

    一.pyqt5中动画的继承关系图 二.关于QAbstractAnimation父类的认识 1.主要作用 继承此类, 实现一些自定义动画 所有动画共享的功能 2.功能作用 循环操作 setLoopCount(count):设置循环次数 currentLoop():当前循环 currentLoopTime():当前循环时间 时间操作 duration():单次时长 totalDuration():动画总时长 currentTime():当前时长 动画方向 setDirection(QAbstract

  • C++中的Lambda函数详解

    目录 一 函数语法 二 函数应用 1.在普通函数中使用 2.在qt信号槽中使用 3.在std::sort排序函数中的使用 三 总结 一 函数语法 我们平时调用函数的时候,都是需要被调用函数的函数名,但是匿名函数就不需要函数名,而且直接写在需要调用的地方,对于以前没用过的小伙伴来说,第一眼看见了这语法可能很迷惑. C++11的基本语法格式为: [capture](parameters) -> return_type { /* ... */ } (1) [capture] :[]内为外部变量的传递方

  • Angularjs中数据绑定的实例详解

    Angularjs中数据绑定的实例详解 这是一个最简单的angularjs的例子,关于数据绑定的,大家可以执行一下,看看效果 <html ng-app> <head> <title>angularjs-include</title> <script type="text/javascript" src="js/angular/angular.min.js"></script> </head

  • 基于angular中的重要指令详解($eval,$parse和$compile)

    在angular的服务中,有一些服务你不得不去了解,因为他可以说是ng的核心,而今天,我要介绍的就是ng的两个核心服务,$parse和$compile.其实这两个服务讲的人已经很多了,但是100个读者就有100个哈姆雷特,我在这里讲讲自己对于他们两个服务的理解. 大家可能会疑问,$eval呢,其实他并不是一个服务,他是scope里面的一个方法,并不能算服务,而且它也基于parse的,所以只能算是$parse的另一种写法而已,我们看一下ng源码中$eval的定义是怎样的就知道了 $eval: fu

  • python中 logging的使用详解

    日志是用来记录程序在运行过程中发生的状况,在程序开发过程中添加日志模块能够帮助我们了解程序运行过程中发生了哪些事件,这些事件也有轻重之分. 根据事件的轻重可分为以下几个级别: DEBUG: 详细信息,通常仅在诊断问题时才受到关注.整数level=10 INFO: 确认程序按预期工作.整数level=20 WARNING:出现了异常,但是不影响正常工作.整数level=30 ERROR:由于某些原因,程序 不能执行某些功能.整数level=40 CRITICAL:严重的错误,导致程序不能运行.整数

  • JavaWeb Servlet中Filter过滤器的详解

    JavaWeb Servlet中Filter过滤器的详解 1.简述 Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制.过滤敏感词汇.压缩响应信息).Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应response,只提供过滤作用(Servlet被调用之前检查Request对象修改其相关信息,Servlet被调用后检查Response修改其相关信息),Filter对象常驻服务器. 2.Lifecyc

  • C++ 中构造函数的实例详解

    C++ 中构造函数的实例详解 c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助. 1. 构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: // 数据成员 int m_va

  • 基于C++中setiosflags()的用法详解

    cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2); setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定区域内的动作:   iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧:   iso::right 也是se

随机推荐