【QT】QTableWidget 详解

1. QT: QTableWidget 一些问题相关链接:

QT: QTableWidget 去除序号列
QT: QTableWidget 去除表头
QT: QTableWidget 获取当前行内容,判断QTableWidget是否被点击
QT: QTableWidget可编辑设置,设置部分可编辑
QT: QTableWidget表格鼠标点击事件信号
QT: QTableWidget 获取指定行与列的单元格数据QTableWidgetItem
QT: QTableWidget遍历所有单元格
QT: QTableWidget 表头设计

2. QT 绘制表格demo代码

在这里插入图片描述

void PageProductInfo::create_info_table()   // 绘制产品信息表格
{
	// 先清空原表格
    ui->tableWidget_left->clear();

    //设置表头
    QTableWidgetItem    *headerItem;
    QStringList headerText;
    headerText<<"选择"<<"序号"<<"产品型号"<<"图号"<<"名称"<<"备注";  //表头标题用QStringList来表示
    ui->tableWidget_left->setColumnCount(headerText.count());//列数设置为与 headerText的行数相等
    ui->tableWidget_left->setHorizontalHeaderLabels(headerText);
    ui->tableWidget_left->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tableWidget_left->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);//选择
    ui->tableWidget_left->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);//序号
    ui->tableWidget_left->horizontalHeader()->setMinimumHeight(64);

    //设置表头的样式
    ui->tableWidget_left->horizontalHeader()->setFixedHeight(36); //设置表头的高度
    ui->tableWidget_left->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:#9594A5;color: white;font-family:黑体;}");
    ui->tableWidget_left->horizontalHeader()->setHighlightSections(false); //表头不会因为鼠标点击选中而变色
    ui->tableWidget_left->setEditTriggers(QAbstractItemView::NoEditTriggers);//取消单元格的点击编辑
    ui->tableWidget_left->setSelectionMode(QAbstractItemView::SingleSelection);//单选
    ui->tableWidget_left->setSelectionBehavior(QAbstractItemView::SelectRows);//只能选中行

    int rowsize = m_vec_info.size();
    // ****************************************************
	// 非常非常重要,不设定总行数,会导致单元格无法插入
	// ****************************************************
    ui->tableWidget_left->setRowCount(rowsize);//总行数

    int rowIndex =0;
    // 设置表格内每一行的数据
    for(int i=0; i<m_vec_info.size(); i++)
    {
        ui->tableWidget_left->setRowHeight(rowIndex, 48);//设置行的高度
        QTableWidgetItem *item_index = new QTableWidgetItem (QString::number(rowIndex+1));
        // 具体内容大家可以自行定义
        QTableWidgetItem *item_CPXH = new QTableWidgetItem (m_vec_info[i].CPXH);
        QTableWidgetItem *item_TH = new QTableWidgetItem (m_vec_info[i].TH);
        QTableWidgetItem *item_MC = new QTableWidgetItem (m_vec_info[i].MC);
        QTableWidgetItem *item_BZ = new QTableWidgetItem (m_vec_info[i].BZ);

        //字体颜色
        item_index->setTextColor(QColor(255,255,255));
        item_CPXH->setTextColor(QColor(255,255,255));
        item_TH->setTextColor(QColor(255,255,255));
        item_MC->setTextColor(QColor(255,255,255));
        item_BZ->setTextColor(QColor(255,255,255));

        // 居中
        item_index->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        item_CPXH->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        item_TH->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        item_MC->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        item_BZ->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

		//创建复选框控件
        QCheckBox *box = new QCheckBox();
        // 设置控件大小位置
        box->setGeometry(30,10,20,20);
        // 创建窗口和布局,将复选框控件加入布局中,再将布局添加到窗口中。
        QHBoxLayout *vLayout = new QHBoxLayout();
        QWidget *Widget_btn = new QWidget;
        vLayout->addWidget(box);
        Widget_btn->setLayout(vLayout);
        ui->tableWidget_left->setCellWidget(rowIndex,0,Widget_btn);
        ui->tableWidget_left->setItem(rowIndex,1,item_index);//添加序号
        ui->tableWidget_left->setItem(rowIndex,2,item_CPXH);//添加产品型号
        ui->tableWidget_left->setItem(rowIndex,3,item_TH);//添加图号
        ui->tableWidget_left->setItem(rowIndex,4,item_MC);//添加名称
        ui->tableWidget_left->setItem(rowIndex,5,item_BZ);//添加备注
        
        rowIndex++;
    }

	// 设置表格序号列隐藏
    ui->tableWidget_left->verticalHeader()->setHidden(true);
    // 创建表格单元格点击的信号槽,能够返回单元格所点击的行和列
    connect(ui->tableWidget_left,SIGNAL(cellClicked(int,int)),this,SLOT(show_prodcut_sets(int,int)));

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值