QT QTableView表格左上角样式
在设置完QTableView的表头样式后,发现表格左上角是一片空白,如下图:
文章图片
我们希望左上角的区域也是和表头的颜色一致,可以设置此处样式:
/*QTableView 左上角样式*/
QTableView QTableCornerButton::section {
color: white;
/*文字颜色*/
background-color: rgb(41, 139, 201);
/*背景色*/
border: 5px solid #418bc9;
/*边框*/
border-radius:0px;
/*边框圆角*/
border-color: rgb(41, 139, 201);
/*边框颜色*/
font: bold 11pt;
/*字体大小*/
padding:12px 0 0 10px;
/*内边距*/
}
【QT QTableView表格左上角样式】效果:
文章图片
我们还想在左上角位置添加文字为“序号”,效果图如下:
文章图片
实现代码:
QAbstractButton*btn = tableView->findChild();
if (btn)
{
btn->setText(QStringLiteral("序号"));
btn->installEventFilter(this);
/*注册事件 CPersonMng::eventFilter*/
QStyleOptionHeader opt;
opt.text = btn->text();
QSize s = (btn->style()->sizeFromContents(QStyle::CT_HeaderSection, &opt, QSize(), btn).expandedTo(QApplication::globalStrut()));
if (s.isValid())
tableView->verticalHeader()->setMinimumWidth(s.width());
}
bool CPersonMng::eventFilter(QObject* o, QEvent* e)
{
if (e->type() == QEvent::Paint)
{
QAbstractButton* btn = qobject_cast(o);
if (btn)
{
// paint by hand (borrowed from QTableCornerButton)QStyleOptionHeader opt;
opt.init(btn);
QStyle::State state = QStyle::State_None;
if (btn->isEnabled())
state |= QStyle::State_Enabled;
if (btn->isActiveWindow())
state |= QStyle::State_Active;
if (btn->isDown())
state |= QStyle::State_Sunken;
opt.state = state;
opt.rect = btn->rect();
opt.text = btn->text();
// this line is the only difference to QTableCornerButtonopt.position = QStyleOptionHeader::OnlyOneSection;
QStylePainter painter(btn);
painter.drawControl(QStyle::CE_Header, opt);
return true;
// eat event}
}
return false;
}
推荐阅读
- 1040表格和W-2表格
- 教你如何做一个好看的表格,excel使用技巧大全
- 前端页面表格控件handsontable在vue项目中的应用
- (IOS)为UIView某个角添加圆角
- 2020-05-24怎样删除表格里的文字只保留数字
- 6、bootstrap-表格
- 拖拽插件sortable.js之el-table表格拖拽效果代码
- UI框架系列-table
- 从服务端生成Excel电子表格(Node.js+SpreadJS)
- 太漂亮了 , 输出好看的表格,就用这个 Python 库