1 Star 0 Fork 0

uthelei/CodeLineCount

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
treeview.cpp 2.75 KB
一键复制 编辑 原始数据 按行查看 历史
helei 提交于 2023-05-25 19:22 . 修改windows差异
#include "treeview.h"
#include "delegate.h"
#include "headerview.h"
#include <QApplication>
//#include <DApplicationHelper>
//#include <DFontSizeManager>
#include <QStyle>
#include <QVBoxLayout>
#include <QHeaderView>
#include <QPainter>
#include <QPainterPath>
TreeView::TreeView(QWidget* parent)
: QTreeView(parent)
{
initUI();
retranslateUI();
setMouseTracking(true);
}
void TreeView::initUI()
{
HeightDelegate* delegate = new HeightDelegate(this);
m_headView = new HeaderView(Qt::Horizontal, this);
setHeader(m_headView);
setItemDelegate(delegate);
setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerItem); // 设置垂直滚动模式
setFrameShape(QFrame::NoFrame); // 无边框设置
setSelectionMode(QAbstractItemView::ExtendedSelection); // 设置支持多行选择(shift/ctrl)
setSelectionBehavior(QAbstractItemView::SelectRows); // 设置点击选中整行
setEditTriggers(QAbstractItemView::NoEditTriggers);
setRootIsDecorated(false); // 设置降序
setItemsExpandable(false); // 可展开项
viewport()->setAutoFillBackground(false);
setSortingEnabled(true);
}
void TreeView::retranslateUI()
{
}
void TreeView::paintEvent(QPaintEvent* event)
{
QPainter painter(viewport());
painter.save();
painter.setRenderHints(QPainter::Antialiasing);
painter.setOpacity(1);
painter.setClipping(true);
//根据窗口激活状态设置颜色
QWidget* wnd = qApp->activeWindow();
QPalette::ColorGroup cg;
if (!wnd)
{
cg = QPalette::Inactive;
}
else
{
cg = QPalette::Active;
}
// auto *dAppHelper = DApplicationHelper::instance();
auto palette = qApp->palette();
QBrush bgBrush(palette.color(cg, QPalette::Base));
//绘制背景
QStyleOptionFrame option;
initStyleOption(&option);
QRect rect = viewport()->rect();
QRectF clipRect(rect.x(), rect.y() - rect.height(), rect.width(), rect.height() * 2);
QRectF subRect(rect.x(), rect.y() - rect.height(), rect.width(), rect.height());
QPainterPath clipPath, subPath;
clipPath.addRect(rect);
painter.fillPath(clipPath, bgBrush);
painter.restore();
QTreeView::paintEvent(event);
}
void TreeView::keyPressEvent(QKeyEvent* event)
{
QTreeView::keyPressEvent(event);
if (event->key() == Qt::Key_Up || event->key() == Qt::Key_Down)
emit clicked(currentIndex());
}
void TreeView::setHeaderVisble(bool visible)
{
m_headView->setVisible(visible);
}
void TreeView::updateConent()
{
updateGeometries();
}
int TreeView::viewRowHeight()
{
if (this->model()->rowCount() <= 0)
return 0;
return this->rowHeight(this->model()->index(0, 0));
}
QModelIndexList TreeView::selectedViewIndexes()
{
return selectedIndexes();
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/uthelei/CodeLineCount.git
git@gitee.com:uthelei/CodeLineCount.git
uthelei
CodeLineCount
CodeLineCount
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385