資源簡介
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
評論
共有 條評論