Qt5.8 QTableView的应用(Qss美化,加checkbox)

  1. 利用数据模型添加表头
    [cpp] view plain copy
    1. QStandardItemModel  *m_pModel;  
    2. m_pModel = new QStandardItemModel(ui->tableView_log);  
    3. //m_pModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("信息"));  
    4. m_pModel->setColumnCount(5);  
    5. m_pModel->setHeaderData(0, Qt::Horizontal, QString(""));  
    6. m_pModel->setHeaderData(1, Qt::Horizontal, QString("时间"));  
    7. m_pModel->setHeaderData(2, Qt::Horizontal, QString("设备"));  
    8. m_pModel->setHeaderData(3, Qt::Horizontal, QString("用户"));  
    9. m_pModel->setHeaderData(4, Qt::Horizontal, QString("操作"));  

  2. 添加行数据
    [cpp] view plain copy
    1. for(int i = 0; i < 10; ++i)  
    2. {  
    3.     m_pModel->setItem(i, 1, new QStandardItem("2016.01.21 15:50:25"));  
    4.     m_pModel->setItem(i, 2, new QStandardItem("channel01"));  
    5.     m_pModel->setItem(i, 3, new QStandardItem("admin"));  
    6.     m_pModel->setItem(i, 4, new QStandardItem("录音"));  
    7. }  

  3. 为QTableView设置数据模型
    [cpp] view plain copy
    1. ui->tableView_log->setModel(m_pModel);  

  4. 设置第一列为固定80宽度,其他自适应
    [cpp] view plain copy
    1. ui->tableView_log->setColumnWidth(0, 80);  
    2. ui->tableView_log->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);  
    3. ui->tableView_log->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed);  
    4. ui->tableView_log->resizeColumnsToContents();  

  5. 使用交替行颜色
    [cpp] view plain copy
    1. ui->tableView_log->setAlternatingRowColors(true);  

  6. QSS里设置交替行颜色,及grid线颜色,选中背景色
    [css] view plain copy
    1. QTableView{  
    2.     colorrgb(000);  
    3.     border1px solid #C07010;          /*边框颜色*/  
    4.     gridline-color:#C07010;             /*grid线颜色*/  
    5.     background-colorrgb(202020);  
    6.     alternate-background-colorrgb(200200200); /*行交替颜色*/  
    7.     selection-background-colorrgb(130190100); /*选中行背景颜色*/  
    8. }  
    9.   
    10. QTableView::item:!alternate:!selected{  
    11.     background-colorrgb(220220220);    /*交替行的另一颜色*/  
    12. }  
    这样可以让底下还没数据的行是表格的背景色
  7. Qt5.8 QTableView的应用(Qss美化,加checkbox)
  8. 如果不需要这个效果,无数据行的背景跟交替行的另一颜色一样,可以去掉QTableView::item:!alternate:!selected则其颜色就是background-color了。
  9. 表头的qss
    [css] view plain copy
    1. QHeaderView::section{  
    2.     background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(808080255), stop:1 rgba(303030255));  
    3.     colorrgb(240240240);  
    4.     padding-left4px;  
    5.     border1px solid #C07010;  
    6.     min-height30px;  
    7. }  

  10. 在第一列加入checkbox
    [cpp] view plain copy
    1. for(int i = 0; i < 10; ++i)  
    2.     {  
    3.         QStandardItem *item = new QStandardItem();  
    4.         item->setCheckable(true);  
    5.         item->setCheckState(Qt::Unchecked);  
    6.         m_pModel->setItem(i, 0, item);  
    7.     }  
    转载地址:http://blog.csdn.net/zyx4843/article/details/50557411