Qt5:QTableWidget创建表格

Qt5在窗口创建表格需要用到Table Widget控件,示例代码实现了以下功能,具体情况如上图所示:

  • 设置表格行列数
  • 添加内容
  • 添加横向表头
  • 纵横表头可视化
  • 栅格可视化
  • 是否可编辑
  • 设置表格选择方式(整行或者整列)
  • 设置选择目标方式
  • 设置选中颜色
  • 合并单元格
  • 设置滚动条
  • 获取单元格内容
  • 添加Combox控件
  • 添加图片
  • 删除行和列
  • 清空内容

具体做法如下:

添加Table Widget控件

打开Qt,新建一个Qt Widgets Application项目,转到设计师模式,从左侧工具栏添加一个Table Widget控件到窗口上,调整Table Widget控件的大小,修改Table Widget控件的对象名为qTableWidget

添加代码

1、添加mainwindow.h代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

2、添加mainwindow.cpp代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
//添加头文件
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QDebug>
#include <QComboBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle(tr("TableWidget"));//设置对话框的标题
    ui->qTableWidget->setColumnCount(4);//设置列数
    ui->qTableWidget->setRowCount(10);//设置行数
    ui->qTableWidget->setWindowTitle("QTableWidget");
    QStringList m_Header;
    m_Header<<QString("序号")<<QString("姓名")<<QString("性别")<<QString("地址");
    ui->qTableWidget->setHorizontalHeaderLabels(m_Header);//添加横向表头
    ui->qTableWidget->verticalHeader()->setVisible(true);//纵向表头可视化
    ui->qTableWidget->horizontalHeader()->setVisible(true);//横向表头可视化
    //ui->tableWidget->setShowGrid(false);//隐藏栅格
    ui->qTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置编辑方式:禁止编辑表格
    ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//设置表格选择方式:设置表格为整行选中
    //ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);//设置表格选择方式:设置表格为整列选中
    ui->qTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//选择目标方式
    ui->qTableWidget->setStyleSheet("selection-background-color:pink");//设置选中颜色:粉色


    for(int rows=0;rows<10;rows++)
    {
        for(int columns=0;columns<4;columns++)
        {
            if(columns==0)
            {
                ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("1"));
            }
            else if(columns==1)
            {
                ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("可乐"));
            }
            else if(columns==2)
            {
                ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("女"));
            }
            else
            {
                ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("成都"));
            }
        }
    }
    for(int rows=0;rows<10;rows++)
    {
        for(int columns=0;columns<4;columns++)
        {
            ui->qTableWidget->setColumnWidth(columns,125);
            ui->qTableWidget->setRowHeight(rows,30);
            ui->qTableWidget->item(rows,columns)->setTextAlignment(Qt::AlignCenter);//居中显示
            ui->qTableWidget->item(rows,columns)->setBackgroundColor(QColor(85,170,255));//设置前景颜色
            ui->qTableWidget->item(rows,columns)->setTextColor(QColor(0,0,0));//设置文本颜色
            ui->qTableWidget->item(rows,columns)->setFont(QFont("Helvetica"));//设置字体为黑体
        }
    }
    ui->qTableWidget->setSpan(2, 2,2 ,1);//合并单元格
    ui->qTableWidget->setItem(2, 2, new QTableWidgetItem(QIcon("E:\\Qt_Project\\QTableWidget\\1.jpg"), "路飞"));//插入图片
    ui->qTableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//设置水平滚动条
    ui->qTableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//设置垂直滚动条
    //设置行和列的大小设为与内容相匹配(如果设置了宽高就不要用了)
    //ui->qTableWidget->resizeColumnsToContents();
    //ui->qTableWidget->resizeRowsToContents();

    QString strText = ui->qTableWidget->item(1, 1)->text();//获取单元格的内容
    qDebug()<<"单元格内容:"<<strText;//输出单元格内容

    //设置列标签
    QStringList HStrList;
    HStrList.push_back(QString("id"));
    HStrList.push_back(QString("name"));
    HStrList.push_back(QString("sex"));
    HStrList.push_back(QString("city"));
    HStrList.push_back(QString("other"));
    //设置行列数(只有列存在的前提下,才可以设置列标签)
    int HlableCnt = HStrList.count();
    ui->qTableWidget->setRowCount(10);
    ui->qTableWidget->setColumnCount(HlableCnt);
    //设置列标签
    ui->qTableWidget->setHorizontalHeaderLabels(HStrList);

   //把QTableWidgetItem对象内容转换为QString
    //QString str =ui->qTableWidget->item(0,0)->data(Qt::DisplayRole).toString();

    //具体单元格中添加ComboBox控件,下拉列表
    QComboBox *comBox = new QComboBox();
    comBox->addItem("成都");
    comBox->addItem("重庆");
    ui->qTableWidget->setCellWidget(0,3,comBox);

    //ui->qTableWidget->removeColumn(0);//删除列
    //ui->qTableWidget->removeRow(0);//删除行
    //ui->qTableWidget->clear();//清空掉表格内所有内容,包括标题头
    //ui->qTableWidget->clearContents();//这个清空所有内容不包括标题头
}

MainWindow::~MainWindow()
{
    delete ui;
}

修改版

修改版完整代码:

GItHub下载:https://github.com/MarsXiaolei/QtCode/tree/master/QTableWidget

 

 

 

 

  • 29
    点赞
  • 240
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值