资源简介
QT QTableView 多行表头,自定义表头,继承 QTableView
代码片段和文件信息
#include
#include
#include “HHeaderItemDelegate.h“
#include “HHeaderView.h“
#include
HHeaderItemDelegate::HHeaderItemDelegate(Qobject *parent) : QstyledItemDelegate(parent)
{
}
void HHeaderItemDelegate::setHeaderView(HHeaderView *pHeader)
{
m_pHeaderView = pHeader;
}
//! headerView中绘制的item,根据不同的操作显示不同的效果
void HHeaderItemDelegate::paint (QPainter * painter
const QstyleOptionViewItem& option
const QModelIndex &index) const
{
int row = index.row();
int col = index.column();
//const int textMargin = QApplication::style()->pixelMetric(Qstyle::PM_FocusframeHMargin) + 1;
QRect smallRect;
//判断是否有checkbox
//! 目前我是不会设置checkbox的
if (m_pHeaderView->isCheckedEnable(row col))
{
smallRect = Qstyle::alignedRect(option.direction Qt::AlignCenter
QSize(option.fontMetrics.width(index.data(Qt::DisplayRole).toString()) + 25 option.fontMetrics.height() + 3)
option.rect);
}
else
{
smallRect = Qstyle::alignedRect(option.direction Qt::AlignCenter
QSize(option.fontMetrics.width(index.data(Qt::DisplayRole).toString()) + 8 option.fontMetrics.height() + 3)
option.rect);
}
QstyleOptionHeader header_opt;
header_opt.rect = option.rect;
header_opt.position = QstyleOptionHeader::Middle;
header_opt.textAlignment = Qt::AlignCenter;
header_opt.state = option.state;
//header_opt.state |= Qstyle::State_HasFocus;//Qstyle::State_Enabled | Qstyle::State_Horizontal | Qstyle::State_None | Qstyle::State_Raised;
//判断是否能够排序
//! 支持排序
if (m_pHeaderView->isSortedEnable(row col))
{
//可以排序
//获取它当前的排序顺序
int ret = m_pHeaderView->sortedDirection(row col);
if (0 == ret)
{
header_opt.sortIndicator = QstyleOptionHeader::SortUp;
}
else if (1 == ret)
{
header_opt.sortIndicator = QstyleOptionHeader::SortDown;
}
else
{
header_opt.sortIndicator = QstyleOptionHeader::None;
}
}
if (m_pHeaderView->isItemPress(row col))
{
header_opt.state |= Qstyle::State_Sunken; //按钮按下效果
}
painter->save();
QApplication::style()->drawControl(Qstyle::CE_Header &header_opt painter);
painter->restore();
painter->setPen(QColor(25500));
QstyleOptionViewItemV4 xopt(option);
xopt.state &= ~Qstyle::State_MouseOver;
if (m_pHeaderView->isCheckedEnable(row col))
{
//判断是该单元格是否有checkbox
xopt.features |= QstyleOptionViewItemV4::HasCheckIndicator;
//判断checkbox的状态
Qt::CheckState state = m_pHeaderView->checkedState(row col);
if (Qt:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6988 2016-09-07 14:35 testHeadView\HHeaderItemDelegate.cpp
文件 988 2016-09-07 14:31 testHeadView\HHeaderItemDelegate.h
文件 5448 2016-11-14 15:58 testHeadView\HHeaderModel.cpp
文件 2606 2016-08-26 14:28 testHeadView\HHeaderModel.h
文件 17281 2018-02-24 15:39 testHeadView\HHeaderView.cpp
文件 3757 2016-09-06 17:16 testHeadView\HHeaderView.h
文件 193 2016-09-08 09:48 testHeadView\main.cpp
文件 1397 2016-11-14 16:28 testHeadView\Readme.txt
文件 2182 2016-11-14 15:53 testHeadView\TcTabelModel.cpp
文件 758 2016-09-08 17:55 testHeadView\TcTabelModel.h
文件 4336 2016-11-14 15:58 testHeadView\TcTableView.cpp
文件 1012 2016-09-26 10:24 testHeadView\TcTableView.h
文件 1817 2016-11-14 15:56 testHeadView\TcTableWidget.cpp
文件 633 2016-09-08 17:23 testHeadView\TcTableWidget.h
文件 2843 2016-09-08 17:21 testHeadView\TcTableWidget.ui
文件 777 2016-11-14 15:57 testHeadView\testHeadView.pro
文件 2377 2016-08-24 18:24 testHeadView\VHeaderModel.cpp
文件 795 2016-08-24 18:08 testHeadView\VHeaderModel.h
文件 2456 2016-08-24 18:21 testHeadView\VHeaderView.cpp
文件 609 2016-08-24 18:08 testHeadView\VHeaderView.h
目录 0 2018-02-24 18:34 testHeadView\bin
目录 0 2018-02-24 18:35 testHeadView\platforms
目录 0 2018-02-24 18:35 testHeadView
----------- --------- ---------- ----- ----
59253 23
评论
共有 条评论