QTableWidget如何实现这个表格效果

Felix.Peng 2015-11-26 09:45:25
想请教一下各位大神,如何实现下面这个界面的表格效果,我知道利用setStyleSheet()能够配置样式,但是弄不出这个效果,所以向大家求助,最好能提供qss脚本,谢谢!
...全文
1819 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felix.Peng 2015-11-28
  • 打赏
  • 举报
回复

   ui->tbStd->setRowCount(7);
    ui->tbStd->setColumnCount(3);
    ui->tbStd->setFrameShape(QFrame::NoFrame); //设置边框
    ui->tbStd->setFixedSize(242,212);
    ui->tbStd->setEditTriggers(QAbstractItemView::NoEditTriggers);
    ui->tbStd->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
    ui->tbStd->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  //去掉垂直滚动条
    ui->tbStd->setFont(QFont("Helvetica"));

    ui->tbStd->setColumnWidth(0,80);
    ui->tbStd->setColumnWidth(1,80);
    ui->tbStd->setColumnWidth(2,80);

    ui->tbStd->setAlternatingRowColors(true);
    ui->tbStd->setFocusPolicy(Qt::NoFocus); //去除选中虚线框

    QPalette palette;
    palette.setColor(QPalette::Base, QColor(255,255,255));
    palette.setColor(QPalette::AlternateBase, QColor(233,245,252));
    ui->tbStd->setPalette(palette);

    ui->tbStd->setItem(0, 0, new QTableWidgetItem("Standard"));
    ui->tbStd->setItem(0, 1, new QTableWidgetItem("[Conc]"));
    ui->tbStd->setItem(0, 2, new QTableWidgetItem("ABS"));

    ui->tbStd->item(0,0)->setTextColor(Qt::white);
    ui->tbStd->item(0,0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui->tbStd->item(0,0)->setBackground(QColor(10, 53, 79));
    ui->tbStd->item(0,0)->setFont(QFont("Helvetica",10,QFont::Bold));

    ui->tbStd->item(0,1)->setTextColor(Qt::white);
    ui->tbStd->item(0,1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui->tbStd->item(0,1)->setBackground(QColor(10, 53, 79));
    ui->tbStd->item(0,1)->setFont(QFont("Helvetica",10,QFont::Bold));

    ui->tbStd->item(0,2)->setTextColor(Qt::white);
    ui->tbStd->item(0,2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui->tbStd->item(0,2)->setBackground(QColor(10, 53, 79));
    ui->tbStd->item(0,2)->setFont(QFont("Helvetica",10,QFont::Bold));

    for( int i = 0; i < 6; i++ )
    {
        m_spinbox[i] = new QDoubleSpinBox();
        m_spinbox[i]->setDecimals(3);
        m_spinbox[i]->setSingleStep(0.001);
        m_spinbox[i]->setMaximum(6.0);
        m_spinbox[i]->setMinimum(0.0);
        m_spinbox[i]->setButtonSymbols(QAbstractSpinBox::NoButtons);
        ui->tbStd->setCellWidget(i+1,1, m_spinbox[i]);

        ui->tbStd->setItem(i+1, 0, new QTableWidgetItem(QString("S%1").arg(i+1)));
        ui->tbStd->setItem(i+1, 1, new QTableWidgetItem(""));
        ui->tbStd->setItem(i+1, 2, new QTableWidgetItem(""));

        ui->tbStd->item(i+1, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
        ui->tbStd->item(i+1, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    }
Felix.Peng 2015-11-28
  • 打赏
  • 举报
回复
引用 1 楼 u011012932 的回复:
1、首先设置表头颜色 然后设置每个单元格颜色,以及隔行变色效果! 2、QHeaderView 设置表头 QTableWidget::item设置单元格 3、样式无非用边框border与背景background 以及单元格与表头的对齐方式setAlignment(Qt::AlignCenter) 4、关于颜色可以用抠色工具,比如mspaint。 授人以鱼不如授人以渔。。。样式可以给你贴代码,希望给你思路,自己搞出来,会有更高的成就感!
谢谢回复!你的博客写的不错,我从中学习了不少知识,谢谢分享! 不过你博客迁移后有很多图片无法显示;
Felix.Peng 2015-11-28
  • 打赏
  • 举报
回复

没有用QSS样式脚本,基本实现了这个效果,但是在不加边框的情况下圆角很难实现;
一去丶二三里 2015-11-27
  • 打赏
  • 举报
回复
1、首先设置表头颜色 然后设置每个单元格颜色,以及隔行变色效果! 2、QHeaderView 设置表头 QTableWidget::item设置单元格 3、样式无非用边框border与背景background 以及单元格与表头的对齐方式setAlignment(Qt::AlignCenter) 4、关于颜色可以用抠色工具,比如mspaint。 授人以鱼不如授人以渔。。。样式可以给你贴代码,希望给你思路,自己搞出来,会有更高的成就感!

21,494

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧