84 lines
2.2 KiB
C++
84 lines
2.2 KiB
C++
#include "CHeaderView.h"
|
|
#include <QPainter>
|
|
#include <QCheckBox>
|
|
#include <QApplication>
|
|
#include "pub_utility_api/FileUtil.h"
|
|
|
|
CHeaderView::CHeaderView(QWidget *parent, int nAddCheckBoxColumn):
|
|
QHeaderView(Qt::Horizontal, parent),
|
|
m_bChecked(false)
|
|
{
|
|
m_indicatorCheck = kbd_public::CFileUtil::getPathOfResFile("gui/icon/alarm/ckb-select.png").c_str();
|
|
m_indicatorUnCheck = kbd_public::CFileUtil::getPathOfResFile("gui/icon/alarm/unchecked.png").c_str();
|
|
|
|
setSectionsClickable(true);
|
|
connect(this, SIGNAL(sectionClicked(int)), this, SLOT(onHeaderClicked(int)));
|
|
m_nAddCheckBoxColumn = nAddCheckBoxColumn;
|
|
}
|
|
|
|
QString CHeaderView::plotIndicatorCheck()
|
|
{
|
|
return m_indicatorCheck;
|
|
}
|
|
|
|
void CHeaderView::setPlotIndicatorCheck(const QString &url)
|
|
{
|
|
m_indicatorCheck = url;
|
|
}
|
|
|
|
QString CHeaderView::plotIndicatorUnCheck()
|
|
{
|
|
return m_indicatorUnCheck;
|
|
}
|
|
|
|
void CHeaderView::setPlotIndicatorUnCheck(const QString &url)
|
|
{
|
|
m_indicatorUnCheck = url;
|
|
}
|
|
|
|
void CHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const
|
|
{
|
|
painter->save();
|
|
QHeaderView::paintSection(painter,rect,logicalIndex);
|
|
painter->restore();
|
|
|
|
if(logicalIndex == m_nAddCheckBoxColumn)
|
|
{
|
|
painter->save();
|
|
QStyleOptionButton button;
|
|
button.state |= QStyle::State_Enabled;
|
|
QRect rc(rect.left()+(rect.width()-20)/2,rect.top()+(rect.height()-20)/2,20,20);
|
|
button.rect = rc;
|
|
QString file;
|
|
if(m_bChecked)
|
|
{
|
|
file = m_indicatorCheck;
|
|
}else
|
|
{
|
|
file = m_indicatorUnCheck;
|
|
}
|
|
|
|
button.iconSize = QSize(button.rect.width()+2,button.rect.height()+2);
|
|
button.icon = QIcon(file);
|
|
button.features = QStyleOptionButton::Flat;
|
|
QApplication::style()->drawControl(QStyle::CE_PushButton,&button,painter);
|
|
painter->restore();
|
|
}
|
|
}
|
|
|
|
void CHeaderView::onHeaderClicked(int index)
|
|
{
|
|
if(index == m_nAddCheckBoxColumn)
|
|
{
|
|
m_bChecked = !m_bChecked;
|
|
this->repaint();
|
|
emit sigColumnCheck(0, m_bChecked);
|
|
}
|
|
}
|
|
|
|
void CHeaderView::clearCheck()
|
|
{
|
|
m_bChecked = false;
|
|
emit sigColumnCheck(0, m_bChecked);
|
|
}
|