//
ct = new CTableView(QRect(100,100,500,400),this);
QStringList headerlst ;
headerlst<<"0"<<"1"<<"2"<<"3";
ct->setHeader(headerlst);
ct->getModel()->setItem(0,0,new QStandardItem(QString("已完成")));
ct->getModel()->setItem(0,1,new QStandardItem(QString("已完成")));
ct->getModel()->setItem(0,2,new QStandardItem(QString("已完成")));
ct->getModel()->setItem(1,0,new QStandardItem(QString("已完成")));
ct->getModel()->setItem(2,0,new QStandardItem(QString("已完成")));
ct->setBtnColumn(3,"btn");
//
#ifndef CTABLEVIEW_H
#define CTABLEVIEW_H
#include <QTableView>
#include <QStandardItemModel>
#include <QPushButton>
class CTableView:public QTableView
{
Q_OBJECT
public:
explicit CTableView(QRect rect,QWidget* parent=0);
void InitTableView(QRect rect);
void SetTabViewColumnSpace();
void setHeader(QStringList headerLst);
void setBtnColumn(int col,QString btnText="");
QStandardItemModel* getModel();
public slots:
void ClickDownloadButton();
QString getColorQss(QString odd,QString even);
private:
QStandardItemModel* m_recordModel;
QString m_oddColor;
QString m_evenColor;
};
#endif // CTABLEVIEW_H
#include "ctableview.h"
#include <QHeaderView>
static QString tableViewQss = "QTableView::item:alternate:!selected, "\
"QTableWidget::item:alternate:!selected, "\
"QListView::item:alternate:!selected { background: color_Odd; } "\
"QTableView::item:!alternate:!selected, "\
"QTableWidget::item:!alternate:!selected, "\
"QListView::item:!alternate:!selected { background: color_Even; }";
CTableView::CTableView(QRect rect,QWidget *parent):
QTableView(parent)
{
InitTableView(rect);
}
void CTableView::InitTableView(QRect rect)
{
this->setStyleSheet(this->getColorQss("lightYellow","lightBlue"));
this->horizontalHeader()->setFont(QFont("宋体",10));
this->setEditTriggers(QAbstractItemView::NoEditTriggers);
this->setSelectionMode(QAbstractItemView::SingleSelection);
this->setSelectionBehavior(QAbstractItemView::SelectRows);
this->setAlternatingRowColors(true);
this->setGeometry(rect);
this->m_recordModel = new QStandardItemModel(this);
}
void CTableView::SetTabViewColumnSpace()
{
//根据内容来确定列宽度
this->resizeColumnsToContents();
this->horizontalHeader();
//获取表头列数
for(int i = 0; i < this->horizontalHeader()->count(); i++)
{
this->setColumnWidth(i, this->columnWidth(i) + 40); //避免列内容挤
}
this->horizontalHeader()->setStretchLastSection(true); //最后一列补全所有空白位置
}
void CTableView::setHeader(QStringList headerLst)
{
m_recordModel->setHorizontalHeaderLabels(headerLst);
this->setModel(m_recordModel);//进行属性设置时,此语句置前
}
void CTableView::setBtnColumn(int col,QString btnText)
{
for (int i = 0; i < this->horizontalHeader()->count(); i++)
{
QPushButton* _button = new QPushButton(btnText);
// if(i%2==0)
// {
// _button->setStyleSheet(tr("background-color:%1").arg(this->m_evenColor));
// }
// else
// {
// _button->setStyleSheet(tr("background-color:%1").arg(this->m_oddColor));
// }
connect(_button, SIGNAL(clicked(bool)), this, SLOT(ClickDownloadButton())); //
_button->setProperty("row", i); //为按钮设置row属性
this->setIndexWidget(m_recordModel->index(i, col), _button);
}
}
QStandardItemModel *CTableView::getModel()
{
return this->m_recordModel;
}
void CTableView::ClickDownloadButton()
{
QPushButton* btn = (QPushButton*)sender();
QString row = btn->property("row").toString();
qDebug()<<"row "<<row;
}
QString CTableView::getColorQss(QString odd, QString even)
{
this->m_oddColor = odd;
this->m_evenColor = even;
tableViewQss.replace("color_Odd",odd);
tableViewQss.replace("color_Even",even);
return tableViewQss;
}