设为首页 加入收藏

TOP

【Qt6】列表模型——便捷类型(四)
2023-09-23 15:43:59 】 浏览:346
Tags:Qt6
  • setBackground:设置该项的背景颜色;
  • setForeground:前景色,就是设置文本的颜色;
  • setStatusTip:显示在状态栏上的提示信息(这个好像不常用);
  • setDragEnabled、setDropEnabled:该项支不支持拖放操作;
  • setAutoTristate:树形视图时用得上,比如父节点被 check 后,是否所有子节点也跟着 check;
  • setCheckable:该项是否显示一个 CheckBox 框,让用户可以在那里勾来勾去;
  • setSelectable:该项允许用户选择吗;
  • setEnabled:若是 true,用户可以操作该项,如选中它;如为 false,此项为禁用状态;
  • setEditable:该项允许编辑吗。
  • 你要是觉得 setEnabled、setEditable、setSelectable 这些方法麻烦,可以用 setFlags 方法一次性解决,用 Or 运算组合的 Qt::ItemFlags 枚举来设置。

    当然,还有些成员我没列出,看着那么多成员方法好像很复杂,其实我们不一定全调用一遍的,看需要,不需要的可以不管的。

    下面咱们也弄个例子。这个例子,我直接从 QTableView 类派生。

    // 头文件
    
    #ifndef CUST_H
    #define CUST_H
    
    #include<qwidget.h>
    #include<qstandarditemmodel.h>
    #include <qtableview.h>
    #include <qcolor.h>
    
    class MyTableView : public QTableView
    {
        Q_OBJECT
    
    public:
        explicit MyTableView(QWidget* parent = nullptr);
        ~MyTableView();
    
    private:
        QStandardItemModel *model;
    };
    
    #endif

    私有成员是模型对象,然后,咱们实际要做的是实现构造函数,实例化模型,再往里面塞数据。

    MyTableView::MyTableView(QWidget *parent)
        : QTableView(parent)
    {
        // 实例化模型类
        model = new QStandardItemModel(this);
        // 五行三列
        // model->setRowCount(5);
        // model->setColumnCount(3);
        // 设置列标题
        model->setHorizontalHeaderLabels({"学号", "姓名", "分数"});
        // 好,我们开始准备数据
        // 第一行
        QStandardItem *cell00 = new QStandardItem(QIcon("a.png"), "2572");
        QStandardItem *cell01 = new QStandardItem("小李");
        QStandardItem *cell02 = new QStandardItem("58");
        // 不合格,让它显示黄色
        cell02->setBackground(QColor("yellow"));
        cell02->setForeground(QColor("red"));
        // 设置到模型中
        model->setItem(0, 0, cell00);
        model->setItem(0, 1, cell01);
        model->setItem(0, 2, cell02);
        // 第二行
        QStandardItem *cell10 = new QStandardItem(QIcon("a.png"), "2055");
        QStandardItem *cell11 = new QStandardItem("小陈");
        QStandardItem *cell12 = new QStandardItem("85");
        model->setItem(1, 0, cell10);
        model->setItem(1, 1, cell11);
        model->setItem(1, 2, cell12);
        // 第三行
        QStandardItem *cell20 = new QStandardItem(QIcon("a.png"), "1069");
        QStandardItem *cell21 = new QStandardItem("小杜");
        QStandardItem *cell22 = new QStandardItem("70");
        model->setItem(2, 0, cell20);
        model->setItem(2, 1, cell21);
        model->setItem(2, 2, cell22);
        // 第四行
        QStandardItem *cell30 = new QStandardItem(QIcon("a.png"), "2469");
        QStandardItem *cell31 = new QStandardItem("小王");
        QStandardItem *cell32 = new QStandardItem("100");
        // 满分,给他点奖励
        cell32->setBackground(QColor("blue"));
        cell32->setForeground(QColor("white"));
        model->setItem(3, 0, cell30);
        model->setItem(3, 1, cell31);
        model->setItem(3, 2, cell32);
        // 第五行
        QStandardItem *cell40 = new QStandardItem(QIcon("a.png"), "6394");
        QStandardItem *cell41 = new QStandardItem("小张");
        QStandardItem *cell42 = new QStandardItem("89");
        model->setItem(4, 0, cell40);
        model->setItem(4, 1, cell41);
        model->setItem(4, 2, cell42);
    
        // 设置模型
        setModel(model);
    }
    
    MyTableView::~MyTableView()
    {
    }

    setRowCount、setColumnCount 方法可以不调用,模型会根据你放的数据调整。有两点得注意:

    1、这里每个 QStandardItem 代表的是一

    首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇C++ 学习笔记、01 | 开发简单职工.. 下一篇5.0 CRC32校验技术概述

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目