QT6(44)篇二4.13QTableWidget:本程序的代码实现

(148)以下是设置界面按钮等组件的信号与槽函数

++设置表格窗体的水平表头中的条目
在这里插入图片描述

++设置表格窗体中的数据区的行数,不含水平行表头

在这里插入图片描述

++初始化表格组件中的数据

在这里插入图片描述

++上面的函数调用了 函数 createItemsARow(…),太长,以代码形式给出 :

//为一行的单元格创建 Items。本函根据形参中的数据为表格组件创建一行单元格。
void MainWindow::createItemsARow(int rowNo, QString name,
        QString sex, QDate birth, QString nation, bool isPM, int score)
{
    uint studID = 202105000;  //学号基数。此处设为函数内静态变量也可以。

    //姓名 //数据项类型为MainWindow::ctName //生成表格窗体中的一行中的姓名条目
    //构造函数 QTableWidgetItem(const QString & text, int type = Type);
    QTableWidgetItem * item = new QTableWidgetItem(name, MainWindow::ctName);
    //这是定义在本类中的枚举量 enum  MainWindow::CellType { ctName  = 1000,
    //  ctSex , ctBirth , ctNation , ctPartyM, ctScore  };
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    studID  += rowNo ;   //学号 =基数 + 行号。表格窗体中的每个条目可以保存一个数据。
    item->setData( Qt::UserRole, QVariant(studID) ); //设置 studID为用户数据
    //virtual void QTableWidget::setData(int role, const QVariant & value);
    ui->tableInfo->setItem(rowNo, MainWindow::colName, item);
  //ui->tableInfo->setItem(rowNo, colName, item); 本类中定义的枚举量,也可直接使用
    //void QTableWidget::setItem(int row, int column, QTableWidgetItem * item);

    QIcon   icon;        //性别,生成表格窗体中的一行中的性别条目
    if (sex == "男")  icon.addFile(":/images/icons/boy.ico" );
    else              icon.addFile(":/images/icons/girl.ico");
    item = new QTableWidgetItem(sex, MainWindow::ctSex); //type为MainWindow::ctSex
    item->setIcon(icon); //给性别条目加个图片
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled; //不允许编辑
    //enum Qt::ItemFlag { .. ItemIsSelectable, ItemIsEditable, ItemIsDragEnabled, .. }
    item->setFlags(flags);
    ui->tableInfo->setItem(rowNo, MainWindow::colSex, item);       //为单元格设置Item

    QString str = birth.toString("yyyy-MM-dd"); //日期转换为字符串 //生成出生日期单元格
    item = new QTableWidgetItem(str, MainWindow::ctBirth);  //type为MainWindow::ctBirth
    item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);    //文本对齐格式
    ui->tableInfo->setItem(rowNo, MainWindow::colBirth,item);

    //民族 //type为MainWindow::ctNation //生成本行的民族单元格
    item = new QTableWidgetItem(nation, MainWindow::ctNation);
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui->tableInfo->setItem(rowNo, MainWindow::colNation, item);

    //是否党员 //type为 MainWindow::ctPartyM //生成本行的党员单元格
    item  = new QTableWidgetItem("党员", MainWindow::ctPartyM);
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    flags = Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
    //不允许编辑,但可以由用户更改复选状态
    item->setFlags(flags);
    if (isPM)   item->setCheckState(Qt::Checked  );
    else        item->setCheckState(Qt::Unchecked);
    //enum Qt::CheckState { Unchecked, PartiallyChecked, Checked };
    item->setBackground( QBrush(Qt::yellow) );   //设置本单元格的背景颜色
    ui->tableInfo->setItem(rowNo,MainWindow::colPartyM,item);

    //QString & QString::setNum(int n, int base)
    str.setNum(score); //设置本行的分数单元格 //type为MainWindow::ctPartyM
    item = new QTableWidgetItem(str, MainWindow::ctScore);
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui->tableInfo->setItem(rowNo, MainWindow::colScore, item);
}

(149)在当前行的位置插入一行,并完善此行的单元格。原行后移

在这里插入图片描述

++ 在本表格组件的末尾添加一行

在这里插入图片描述

++ 删除当前行

在这里插入图片描述

++

在这里插入图片描述

++ 读取表格内容到文本按钮

在这里插入图片描述

++ 表格可编辑按钮 :

在这里插入图片描述

++间隔行底色按钮

在这里插入图片描述

++显示水平表头与显示垂直表头按钮

在这里插入图片描述

++ 完成两个单选按钮,行选择与单元格选择

在这里插入图片描述

(150) 完善本程序的状态栏

在这里插入图片描述

++ 记录状态栏里这三个标签的来源,其内存维护,构造与析构,只要将其加入窗体里的容器里就可以

在这里插入图片描述

++

在这里插入图片描述

(151)接着完善 QTableWidget 的信号与槽函数

在这里插入图片描述

(152)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值