QTableWidget使用注意要点总结

来源:互联网 发布:数控铣床编程100例图 编辑:程序博客网 时间:2024/06/05 18:56

关于tablewidget一些总结,常用的使用方法网上一大堆,都可以搜到,比如:

    /*---表头设置 begin---*/    //初始化表头内容    ui->tableWidget->setHorizontalHeaderLabels(m_lstHeaderData);    //设置表头不可见    ui->tableWidget->verticalHeader()->setVisible(false);    ui->tableWidget->horizontalHeader()->setVisible(false);    //设置表头字体加粗//    QFont font = ui->tableWidget->horizontalHeader()->font();//    font.setBold(true);//    ui->tableWidget->horizontalHeader()->setFont(font);//    //设置表头不可点击(默认点击后进行排序)//    ui->tableWidget->horizontalHeader()->setClickable(false);//    ui->tableWidget->verticalHeader()->setClickable(false);    //设置表头背景色    //ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}");    //设置表头高度    //ui->tableWidget->horizontalHeader()->setFixedHeight(25);    /*---表头设置 end---*/    //设置行列宽度充满表格    //ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);    //ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);    //设置内容与表格相匹配    //ui->tableWidget->resizeColumnsToContents();    //ui->tableWidget->resizeRowsToContents();    //设置单个选中    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);    //禁止编辑    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);    //去掉虚线框    ui->tableWidget->setFocusPolicy(Qt::NoFocus);    //去掉 水平/垂直 滚动条    ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);    //ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);    //禁止选中    ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);    //设置选中背景色    //ui->tableWidget->setStyleSheet("selection-background-color:lightblue;");

注意的几点:
1. 如果实现的是翻页的显示表格,下一页的时候必须要清空表格,并设置表格的行列为0,重新设置表格的行和列,否则之前设置的一些属性可能会没效果(包括使用CSS样式表设置的风格)
2.
//设置行列宽度充满表格
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);
//设置内容与表格相匹配
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->resizeRowsToContents();

这两行使用挺方便,但是问题也比较多,首先他两不能同时出现,会冲突没效果,你不能即设置行充满表格,又设置行根据内容扩展。可以这样用:ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
ui->tableWidget->resizeRowsToContents();
这样就问题,水平铺满表格,垂直方向按照内容扩展,注意resizeRowsToContents()的意思按照行去扩展,即一行显示不全就扩展到两行去显示。
3. 最最重要的是,也是我发现的一个大坑,折磨了我一天,还是
resizeRowsToContents()函数,首先它必须在表格填充完数据再去调用,才有效果,这个倒没有折磨我,折磨我的是它竟然还必须是在页面显示出来后填充完数据再去 调用 才有效果,这个真是折磨死我了,因为我做的页面时相互切换的,只有一页有表格,我就在类构造函数中做完一切初始化工作后,默认填充了数据,调了resizeRowsToContents(),结果就是没反应,但是放到resizeEvent函数中去调用,在改变窗口大小触发resizeEvent消息的时候就有了效果,后来经过反复测试验证,终于得出这个结果。。。验证成功那一刻真是大快人心啊。
4. 还有一个是tablewidgte可以setCellWidget添加控件,挺方便,但是如果这个控件被设置了固定的大小,那么

    //设置行列宽度充满表格    ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);    ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);    //设置内容与表格相匹配    ui->tableWidget->resizeColumnsToContents();    ui->tableWidget->resizeRowsToContents();

这两行代码就会没没效果

好了,以上是自己的一些小经验,有不对的地方欢迎指正交流

1 0
原创粉丝点击