(恶心的需求)表头要求特殊的字符串(有下标的那种)。本来去掉了表头,将表格的第一行作为表头,这样就可以在表格上添加QLabel控件实现。

这样的弊端就是没有了表头的鼠标拖动的功能。看到QHeaderView有setIndexWidget ( const QModelIndex & index, QWidget * widget )这个函数,所以采用这个方式。

效果如下:

代码如下:

QStringList headherlist;
headherlist << "abc" << "dfg" << "psd" << "jkk";
headherlist.clear();
headherlist << "" << "" << "" << "";
QHeaderView *hview = ui.tableWidget->horizontalHeader();
ui.tableWidget->setColumnCount(headherlist.count());
ui.tableWidget->setHorizontalHeaderLabels(headherlist);QAbstractItemModel *itemmode = hview->model();int itemwidth = 98;
int mvw = hview->sectionPosition(0);
QLabel *label = new QLabel(hview);
label->setText("ppp");
label->setAlignment(Qt::AlignCenter);
hview->setIndexWidget(itemmode->index(0,0),label);
label->move(mvw,0);
label->setFixedWidth(itemwidth);
m_headerlabellist << label;mvw = hview->sectionPosition(1);
label = new QLabel(hview);
label->setText("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">R<span style=\" vertical-align:sub;\">15</span></p>");
label->setAlignment(Qt::AlignCenter);
hview->setIndexWidget(itemmode->index(0,1),label);
label->move(mvw,0);
m_headerlabellist << label;mvw = hview->sectionPosition(2);
label = new QLabel(hview);
label->setText("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">R<span style=\" vertical-align:sub;\">30</span></p>");
label->setAlignment(Qt::AlignCenter);
hview->setIndexWidget(itemmode->index(0,2),label);
label->move(mvw,0);
m_headerlabellist << label;//实现拖动功能
connect(hview,SIGNAL(sectionResized ( int , int, int  )),this,SLOT(slots_sectionResized(int,int,int)));//对应的槽函数
void headerviewtest::slots_sectionResized( int logicalIndex, int oldSize, int newSize )
{
//方式1
QAbstractItemModel *itemmode = ui.tableWidget->horizontalHeader()->model();
QWidget *w = ui.tableWidget->horizontalHeader()->indexWidget(itemmode->index(0,logicalIndex));
if (w)
{
    w->setFixedWidth(newSize);
}for (int i = logicalIndex+1 ; i < itemmode->columnCount(); ++i)
{
    QWidget *w = ui.tableWidget->horizontalHeader()->indexWidget(itemmode->index(0,i));
    QLabel *label = qobject_cast<QLabel *>(w);

    if (NULL==w) continue;
    if (label)
        qDebug() << ui.tableWidget->horizontalHeader()->sectionPosition(i) << " "<< label->text() << " " ;
    w->move(ui.tableWidget->horizontalHeader()->sectionPosition(i) -2,0);

}
/*
//方式2 。方式1在一个工程里面不好用,所以才有方式2
if (m_headerlabellist.count() < logicalIndex) return;
m_headerlabellist.at(logicalIndex)->setFixedWidth(newSize-4);
for (int i = logicalIndex+1 ; i < m_headerlabellist.count(); ++i)
{
QLabel *w = m_headerlabellist.at(i);
if (NULL==w)continue;w->move(ui.tableWidget->horizontalHeader()->sectionPosition(i) -2,0);
}
*/
}

QHeaderView 表头设置QWidget控件相关推荐

  1. python中与label类似的控件是_Python高级进阶教程021期 pyqt5label控件进阶使用,设置兄弟控件,广告植入...

    知识回顾 1.掌握综合应用登录窗体 2.掌握密码设置setEchoMode 本节知识视频教程 以下开始文字讲解: 1.本节案例:快捷定位 1.把label控件上面的快捷键绑定到指定的另一个兄弟控件上 ...

  2. Qt5.9中设置QLabel控件边框线型(QSS实现:点画线、虚线、实线、3D边框)

    本文主要总结用QSS实现控件QLabel边框类型,其它任何一个控件(包括QWidget)同样可以用这种方法设置.用QSS可以设置QLabel控件边框线型,这些类型包括点画线.虚线.实线.3D边框,下面 ...

  3. android 动态让控件超出屏幕_android 动态设置屏幕控件宽高度

    获取屏幕宽高度: WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Displ ...

  4. Qt QWidget控件透明动画实现

    QWidget控件透明动画实现 要做子控件透明需要用到QGraphicsOpacityEffect类 使用方法: QGraphicsOpacityEffect * m_pGraphicsOpacity ...

  5. 解决在ascx使用outputcache就不可以设置用户控件自己的属性

    解决在ascx使用outputcache就不可以设置用户控件自己的属性 转载至:http://www.aspnetpro.com/NewsletterArticle/2003/08/asp200308 ...

  6. html设置控件位置大小,下面那个代码段设置myButton控件显示在HTML页左上角100px的位置 - 问答库...

    问题: [多选] 下面那个代码段设置myButton控件显示在HTML页左上角100px的位置?() A . B . C . D . 调度例行会议形式有什么() 生产平衡会. 事故分析会. 调度专业会 ...

  7. jQuery - 通过文本描述设置选择控件的选定值

    本文翻译自:jQuery - setting the selected value of a select control via its text description I have a sele ...

  8. My97时间插件使用、My97设置日期控件日期格式

    My97设置日期控件日期格式 需要什么格式的只需要修改dateFmt的值就可以了 <input type="text" id="d233" onclick ...

  9. QTreeview中虚线框解决办法(QWidget控件祛除焦点)

    QTreeview选中后出现虚线框,也就是焦点,一直祛除不了. 可用如下三种方式解决QTreeview焦点问题: 主要用QSS里面的outline:0px;该用法也适用于任何继承于的QWidget控件 ...

最新文章

  1. android post请求添加公共参数_XHttp2 一个功能强悍的网络请求库
  2. Java静态初始化,实例初始化以及构造方法
  3. 十八年前漏洞再现,影响所有Windows版本
  4. ffmpeg硬解码视频文件播放器
  5. OO实现ALV TABLE 八:ALV的布局功能
  6. 怎样理解 MVVM ( Model-View-ViewModel ) ?
  7. jzoj6310-Global warming【线段树,LIS】
  8. MapReduce改造fp-growth算法
  9. 最实用的机器学习算法Top5
  10. 女大学生毕业相亲程序员,吃了一顿大排档,一看车钥匙后犹豫了!
  11. c语言删掉注释,c语言删除注释
  12. mongoDB cluster insert slow
  13. ASP.NET-第二天-加强课程
  14. 20200528每日一句
  15. VMware Workstation Pro的安装详细过程
  16. revit二次开发之教学视频
  17. iOS iPhone、iPad、Mac等禁止系统摄像头功能
  18. 儿童节,来一波回忆杀!
  19. 摄像头poe供电原理_poe供电原理
  20. 北航计算机学院学硕分数,考研|北航各学院复试分数线陆续公布,原来这个专业分数最高!...

热门文章

  1. 2018年考研真题计算机专业,2018年计算机考研真题及参考答案.pdf
  2. (附源码)springBoot高校宿舍交电费系统 毕业设计 031552
  3. Android sockot连接打印机EPSON ESC/POS指令打印
  4. bitbucket搭建
  5. 树莓派刷系统(mac)
  6. 计算机操作系统学习笔记----进程管理
  7. 洋葱架构简介——分离是为了更好的结合
  8. 基金强力介入移动互联网板块
  9. 重要知识:身份证复印件的正确使用方法
  10. vcs_dve+sverilog