firemail
标题:
QTreeView使用总结
[打印本页]
作者:
Qter
时间:
2020-3-8 17:12
标题:
QTreeView使用总结
本帖最后由 Qter 于 2020-3-9 17:51 编辑
http://www.qtcn.org/bbs/simple/?t66006.html
原创系列文章《QTreeView使用总结》
创业一年了,主要用C++/Qt.
最近不忙,在整理一个QTreeView系列文章,总结用到的知识点。
写了一半了,这是序:
QTreeView使用总结--序
https://blog.csdn.net/dpsying/article/details/79687254
欢迎拍砖和提意见!
有什么想补充的点也欢迎提下,根据我能力补充。
序文如下:
https://blog.csdn.net/dpsying/article/details/79687254
1,简介
在Qt开发过程中,我发现树控件即QTreeView使用的非常频繁。
各种批量展示和编辑信息的地方,都用得上该控件。
我的项目在使用QTreeView过程中,用到了各种常规、不常规的功能,并进行过各种改造。
这里将这些知识与技巧作一个总结,分享给大家。
2,《QTreeView使用总结》目录
该系列文章暂拟了下列内容:
1,
QTreeView一个简单使用示例
2,
常用API介绍
3,
表头、行列相关的设置方法
4,
Model/View框架介绍
5,
选中信号处理
6,
单击双击的信号与事件
7,
右键菜单
8,
风格美化,使用qss样式表
9,
使用委托示例:定制item输入效果
10,
使用委托示例:定制item显示效果
11,
数据过滤,使用代理model,简单过滤
12,
数据过滤,使用代理model,自定义过滤条件
13,
自定义model示例,大大优化性能和内存
14,
自定义model示例,控制对齐和颜色
15,
定时刷新后,当前选中行的处理
作者:
Qter
时间:
2020-4-1 09:38
https://blog.csdn.net/ajaxhe/article/details/7518285
https://blog.csdn.net/xdw_it/article/details/80973144
作者:
Qter
时间:
2020-4-1 14:17
本帖最后由 Qter 于 2020-4-1 14:24 编辑
https://www.qtcentre.org/threads/63069-Changing-QStyleOptionButton-(QCheckbox)-to-use-StyleSheet-not-working
画树内部子定义风格的复选框
下面的方法不行
//QStyleOptionButton check_box_style_option;
//check_box_style_option.state |= QStyle::State_Enabled;
//if (checked)
//{
// check_box_style_option.state |= QStyle::State_On;
//}
//else
//{
// check_box_style_option.state |= QStyle::State_Off;
//}
//check_box_style_option.rect = ceckBoxRect;
//QApplication::style()->drawControl(QStyle::CE_CheckBox, &check_box_style_option, painter);
/*QCheckBox* styledCheckBox = new QCheckBox();
styledCheckBox->setGeometry(ceckBoxRect);
styledCheckBox->setCheckState(checkState);
styledCheckBox->setStyleSheet(
"QCheckedBox::indicator:unchecked { image: url(:/gui/images/checkbox_unchecked.png);}"
"QCheckedBox::indicator:checked { image: url(:/gui/images/checkbox_checked.png);}"
);
复制代码
要用这种
QPixmap indicatorPixmap;
QStyleOptionButton check_box_style_option;
if (checked)
{
check_box_style_option.state |= QStyle::State_On;
indicatorPixmap = QPixmap(":/gui/images/checkbox_checked.png");
}
else
{
check_box_style_option.state |= QStyle::State_Off;
indicatorPixmap = QPixmap(":/gui/images/checkbox_unchecked.png");
}
QApplication::style()->drawItemPixmap(painter, ceckBoxRect, 0, indicatorPixmap);
复制代码
作者:
Qter
时间:
2020-4-7 14:07
用递归实现了
下面是 collapse 所有子节点的代码
expand 所有子节点的代码类似,或者在递归函数上加一个 bool 参数就能实现。
/*collapse all child nodes*/
int childCount = model->rowCount(index);
recursive_collapse(index,childCount);
void WellImportDialog::recursive_collapse(const QModelIndex index,int childCount)
{
for(int childNo=0;childNo<childCount;childNo++)
{
QModelIndex childIndex = index.child(childNo,0);
if(ui->treeView_dir->isExpanded(childIndex))
{
ui->treeView_dir->setExpanded(childIndex,false);
if(int rowCount = model->rowCount(childIndex)>0)
recursive_collapse(childIndex,rowCount);
}
}
}
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3