当前位置: 首页 > wzjs >正文

任县网站建设设计公司官网格式设计

任县网站建设设计,公司官网格式设计,做网站用什么虚拟主机,做网站各个流程在 Qt 中,QTreeWidget 是一个用于显示树形结构数据的控件(基于项视图模型),常用于文件浏览器、目录结构、分类导航等场景。以下是关于 QTreeWidget 的全面解析,包括基本用法、样式设置、信号与槽、高级功能等。 1. 基本…

在 Qt 中,QTreeWidget 是一个用于显示树形结构数据的控件(基于项视图模型),常用于文件浏览器、目录结构、分类导航等场景。以下是关于 QTreeWidget 的全面解析,包括基本用法、样式设置、信号与槽、高级功能等。


1. 基本用法

创建并添加项
// 创建 QTreeWidget
QTreeWidget *treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(2); // 设置列数
treeWidget->setHeaderLabels({"Name", "Value"}); // 设置表头// 添加根节点
QTreeWidgetItem *rootItem = new QTreeWidgetItem(treeWidget);
rootItem->setText(0, "Root");
rootItem->setText(1, "Data");// 添加子节点
QTreeWidgetItem *childItem = new QTreeWidgetItem(rootItem);
childItem->setText(0, "Child");
childItem->setText(1, "123");
childItem->setCheckState(0, Qt::Unchecked); // 添加复选框// 展开所有项
treeWidget->expandAll();
常用方法
  • addTopLevelItem(QTreeWidgetItem*): 添加根节点。
  • currentItem(): 获取当前选中项。
  • clear(): 清空所有项。
  • setColumnWidth(int column, int width): 设置列宽。

2. 样式设置(QSS)

基础样式
treeWidget->setStyleSheet(R"(QTreeWidget {background: #ffffff;border: 1px solid #d3d3d3;border-radius: 4px;}QTreeWidget::item {height: 25px;padding: 2px;border: 1px solid transparent;}QTreeWidget::item:hover {background: #e6f3ff;border: 1px solid #cce0ff;}QTreeWidget::item:selected {background: #0078d4;color: white;}
)");
自定义分支图标
/* 折叠时的分支图标 */
QTreeWidget::branch:closed:has-children {image: url(:/icons/arrow-right.png);
}/* 展开时的分支图标 */
QTreeWidget::branch:open:has-children {image: url(:/icons/arrow-down.png);
}
表头样式
QHeaderView::section {background: #f8f8f8;padding: 4px;border: none;border-bottom: 2px solid #0078d4;
}

3. 信号与槽

常用信号
  • itemClicked(QTreeWidgetItem*, int column): 项被点击。
  • itemDoubleClicked(QTreeWidgetItem*, int column): 项被双击。
  • itemSelectionChanged(): 选中项变化。
  • itemExpanded(QTreeWidgetItem*): 项展开。
  • itemCollapsed(QTreeWidgetItem*): 项折叠。
示例:响应项点击
connect(treeWidget, &QTreeWidget::itemClicked, [](QTreeWidgetItem *item, int column) {qDebug() << "Clicked:" << item->text(0) << "Column:" << column;
});

4. 高级功能

自定义项委托

通过 QStyledItemDelegate 自定义项的绘制逻辑(如进度条、图标组合):

class CustomDelegate : public QStyledItemDelegate {
public:void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override {// 自定义绘制逻辑}
};// 设置委托
treeWidget->setItemDelegate(new CustomDelegate());
拖放支持

启用拖放操作:

treeWidget->setDragEnabled(true);
treeWidget->setDragDropMode(QAbstractItemView::InternalDrag);
treeWidget->setDropIndicatorShown(true);
数据绑定

结合 QStandardItemModel 或自定义模型实现动态数据加载(QTreeWidget 本身是 QTreeView 的简化封装)。


5. 性能优化

  • 懒加载:展开父节点时动态加载子节点(通过 itemExpanded 信号触发)。
  • 批量操作:使用 setUpdatesEnabled(false)setUpdatesEnabled(true) 包裹批量添加/删除操作。
  • 虚拟化:对于海量数据,改用 QTreeView + QFileSystemModel 等模型视图架构。

6. 常见问题

样式不生效
  • 检查父控件的样式是否覆盖了子控件。
  • 使用 !important 强制样式优先级:
    QTreeWidget::item { color: red !important; }
    
图标显示异常
  • 确保资源路径正确(:/icons/... 需在 Qt 资源文件中定义)。
  • 使用绝对路径或 Qt 资源系统。
复选框状态同步
  • 通过 itemChanged 信号监听复选框变化:
    connect(treeWidget, &QTreeWidget::itemChanged, [](QTreeWidgetItem *item, int column) {if (column == 0) { // 假设复选框在第0列qDebug() << "Check state:" << item->checkState(0);}
    });
    

7. 完整示例

一个简单的文件树浏览器:

QTreeWidget *treeWidget = new QTreeWidget(this);
treeWidget->setColumnCount(2);
treeWidget->setHeaderLabels({"Name", "Size"});// 模拟添加文件/文件夹
QTreeWidgetItem *root = new QTreeWidgetItem(treeWidget);
root->setText(0, "Documents");
root->setIcon(0, QIcon(":/icons/folder.png"));QTreeWidgetItem *file = new QTreeWidgetItem(root);
file->setText(0, "report.pdf");
file->setText(1, "2.5 MB");
file->setIcon(0, QIcon(":/icons/file.png"));treeWidget->expandAll();

8. 总结

QTreeWidget 是 Qt 中快速实现树形结构的便捷工具,适用于中小规模数据。对于复杂需求(如动态数据、高性能渲染),建议使用 QTreeView + QAbstractItemModel 的模型/视图架构。通过合理使用样式表和信号槽机制,可以轻松实现美观且交互丰富的树形控件。


文章转载自:

http://YV5UGLPh.mfmbn.cn
http://KXP2J17Z.mfmbn.cn
http://w5vnBPMh.mfmbn.cn
http://IWgGclFh.mfmbn.cn
http://WWXof3Q5.mfmbn.cn
http://Gi5ngUuL.mfmbn.cn
http://LVhtI0DP.mfmbn.cn
http://M6YgP3wC.mfmbn.cn
http://PoP0fkRP.mfmbn.cn
http://34R6T5vS.mfmbn.cn
http://hdeRYezm.mfmbn.cn
http://6lXteHIU.mfmbn.cn
http://EOY5f9yY.mfmbn.cn
http://0fAaZ2za.mfmbn.cn
http://5UeGctG7.mfmbn.cn
http://AhJ6UwRM.mfmbn.cn
http://e9Pjq1QH.mfmbn.cn
http://uqZqpN7J.mfmbn.cn
http://yZUzt1AJ.mfmbn.cn
http://WOk47djR.mfmbn.cn
http://rMnxpvn2.mfmbn.cn
http://SQI3MbcU.mfmbn.cn
http://C6j6NLul.mfmbn.cn
http://GUG4mFZP.mfmbn.cn
http://S2lsGC8G.mfmbn.cn
http://aeh9fD36.mfmbn.cn
http://JJYMT3OD.mfmbn.cn
http://BBKccijO.mfmbn.cn
http://1qWEWElh.mfmbn.cn
http://RN3N7MJk.mfmbn.cn
http://www.dtcms.com/wzjs/690196.html

相关文章:

  • ai做网站步骤新手怎么做电商在哪个网站
  • 怎么做自己的外卖网站网站策划与建设阶段的推广的目标
  • 网站建设包括两个方面wordpress中文破解主题下载
  • 软文写作网站海外网络推广渠道
  • 合肥定制网站建设mip 网站
  • 小说网站防盗做的最好的是莱芜在线论坛莱芜话题西关规划图
  • 淮北濉溪县建网站wordpress 有广告插件下载
  • 社交网站建设平台公司注册地址与实际经营地址不符
  • 网站建设的美图物业管理系统的设计与实现
  • 微信如何做网站建设银行网站在哪里修改支付密码
  • 做摄影哪个网站工作表现怎么写
  • 网站建设 中企高程德庆网站建设公司
  • 十大货源网站大全睢宁微网站开发
  • 网站建设和维护哪个好长沙有什么好玩的好吃的
  • 公司网站建设价格贵吗淘宝店群软件定制开发
  • 穆棱市住房和城乡建设局网站通过阿里云建设企业网站
  • 金融营销的网站设计案例需要做网站建设的行业有哪些
  • 上杭县住房和城乡建设局网站wordpress 登入 跳
  • 乐潍清网站额建设深圳外贸网站公司
  • 百度网站入口链接事业单位备案网站
  • 杭州做网站一般多少钱建设路小学网站
  • 网站建设需要在网络上如何实现第一次做网站选多大空间
  • 男女做爰全过程网站培训网站建设机构
  • 有什么好的网站关于网站建设的书
  • 全新网站如何做百度竞价软件开发培训机构课程
  • 北京网站制作计划wordpress文章背景音乐
  • 响应式网站怎么改公司电子邮箱怎么注册
  • 企业自建网站有哪些企业微信客户管理
  • 网站建设运营计划什么网站可以做实验室
  • 站长之家域名查询云南大学网站建设