- 利用數據模型添加表頭
QStandardItemModel *m_pModel; m_pModel = new QStandardItemModel(ui->tableView_log); //m_pModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("項目名")<<QStringLiteral("信息")); m_pModel->setColumnCount(5); m_pModel->setHeaderData(0, Qt::Horizontal, QString("")); m_pModel->setHeaderData(1, Qt::Horizontal, QString("時間")); m_pModel->setHeaderData(2, Qt::Horizontal, QString("設備")); m_pModel->setHeaderData(3, Qt::Horizontal, QString("用戶")); m_pModel->setHeaderData(4, Qt::Horizontal, QString("操作"));
- 添加行數據
for(int i = 0; i < 10; ++i) { m_pModel->setItem(i, 1, new QStandardItem("2016.01.21 15:50:25")); m_pModel->setItem(i, 2, new QStandardItem("channel01")); m_pModel->setItem(i, 3, new QStandardItem("admin")); m_pModel->setItem(i, 4, new QStandardItem("錄音")); }
- 爲QTableView設置數據模型
ui->tableView_log->setModel(m_pModel);
- 設置第一列爲固定80寬度,其他自適應
ui->tableView_log->setColumnWidth(0, 80); ui->tableView_log->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui->tableView_log->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); ui->tableView_log->resizeColumnsToContents();
- 使用交替行顏色
ui->tableView_log->setAlternatingRowColors(true);
- QSS裏設置交替行顏色,及grid線顏色,選中背景色
這樣可以讓底下還沒數據的行是表格的背景色QTableView{ color: rgb(0, 0, 0); border: 1px solid #C07010; /*邊框顏色*/ gridline-color:#C07010; /*grid線顏色*/ background-color: rgb(20, 20, 20); alternate-background-color: rgb(200, 200, 200); /*行交替顏色*/ selection-background-color: rgb(130, 190, 100); /*選中行背景顏色*/ } QTableView::item:!alternate:!selected{ background-color: rgb(220, 220, 220); /*交替行的另一顏色*/ }
- 如果不需要這個效果,無數據行的背景跟交替行的另一顏色一樣,可以去掉QTableView::item:!alternate:!selected則其顏色就是background-color了。
- 表頭的qss
QHeaderView::section{ background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(80, 80, 80, 255), stop:1 rgba(30, 30, 30, 255)); color: rgb(240, 240, 240); padding-left: 4px; border: 1px solid #C07010; min-height: 30px; }
- 在第一列加入checkbox
還有其他方法,看過一篇文章可以參考http://qimo601.iteye.com/blog/1538364for(int i = 0; i < 10; ++i) { QStandardItem *item = new QStandardItem(); item->setCheckable(true); item->setCheckState(Qt::Unchecked); m_pModel->setItem(i, 0, item); }
QTableView的應用(Qss美化,加checkbox)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.