qt之QTableWidget试用经验汇总(不定期更新)

一、前言

记录使用qt的QTableWidget经验,记录下来每次在使用到可以便捷查看,也分享给大家

目录

一、前言

二、环境

三、正文

1.表格初始化通用函数

2.表格不定长数据自动换行并保持最小行高(无初始化部分,更新数据内容部分)

四、结语


二、环境

qt5.7 QTableWidget

windows/linux

三、正文

1.表格初始化通用函数

//通用表格初始化函数,建立表格列,刷新表头和列宽
void sysmain::tableWidget_init(QTableWidget *tab,QVector<int> line,QStringList name,bool push)
{
    tab->clearContents();//清空内容
    tab->verticalHeader()->setVisible(false);//去掉行序号
    tab->horizontalHeader()->setFixedHeight(60); //设置表头的高度
    tab->horizontalHeader()->setStretchLastSection(true);//设置表格是否充满,即行末不留空
    //tab->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); //禁止鼠标拖放列宽度
    tab->horizontalHeader()->setFocusPolicy(Qt::NoFocus); //设置表头不可选
    tab->horizontalHeader()->setHighlightSections(false); //设置表头不可选//QTableWidget表头塌陷问题解决
    tab->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置表格内容不可修改
    tab->setSelectionBehavior(QAbstractItemView::SelectRows);//设置选中就是一行选中
    tab->setSelectionMode(QAbstractItemView::SingleSelection);//设置只能选中一行
    tab->setFocusPolicy(Qt::NoFocus);//设置去掉选中虚线框
    //tab->setAlternatingRowColors(true);//设置表格颜色交替
    //表格滚动部分实现函数:初始化函数+以下俩函数+ (QObject *obj, QEvent *event)
    if(push)tab->viewport()->installEventFilter(this);//对此对象安装事件过滤器
    if(push)tab->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);//设置滚动模式按照像素滑动,做表格滑动时使用
    tab->setColumnCount(line.size());//设置列数量
    for(int i=0;i<line.size();i++)
        tab->setColumnWidth(i,line.at(i));
    tab->setHorizontalHeaderLabels(name);//设置table列表各项标题
    tab->setRowCount(0);
}

需创建头文件定义

    QVector<int> table_line;//表格列宽度
    QStringList table_title;//表格表头标题

初始化调用

    table_line.clear();
    if(Data_user.now_root){//判断当前用户是否具有管理员权限,有管理员权限,所有规则显示,可配置更改
        table_line.append({150,400,400,150,80});//配置表格宽度5列
        table_title.clear();
        table_title.append({"序号","信号名称","信号范围","信号类型","修正系数"});//配置表格表头名称5列
    }
    else{//无管理员权限,部分内容不显示,不可更改
        table_line.append({150,500,250});//配置表格宽度3列
        table_title.clear();
        table_title.append({"序号","信号名称","信号范围"});//配置表格表头名称3列
    }

2.表格不定长数据自动换行并保持最小行高(无初始化部分,更新数据内容部分)

void sysmain::refuse_tableWidget_page4_rule(uint car, uint part, QTableWidget *TableWidget, bool search)
{
    QPainter p(this);
    QFontMetrics fm = p.fontMetrics();//获取字符串宽度

        QString group[2]={"范围","枚举"};
        for(int i=0;i<name.size();i++){  //刷新信号列表
            TableWidget->setItem(i,0,new QTableWidgetItem(QString("%1").arg(i+1,2,10,QChar('0'))));//更新序号,保留2位整数
            TableWidget->item(i,0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//数据居中
            //刷新内容省略、、、
            //下面判断某列字符串长度,超单元格列宽当前行就自动换行
            if(fm.width(range.at(i))>300)
                TableWidget->resizeRowToContents(i);//根据单元格内容自动换行,某一行
            else
                TableWidget->setRowHeight(i,50);//设置行高
        }
//        TableWidget->resizeRowsToContents();//根据单元格内容自动换行,全部,这样设置表格很扁,所有行高都是最小化适应文字高度,不好看
}

四、结语

未完待续。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大桶矿泉水

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值