QT,QTreeWidget,setItemWidget方法 [bq]

ui.setupUi(this);

connect(ui.deleteItems, SIGNAL(clicked()), this, SLOT(OnBtnClicked())); // signal->slot

ui.treeWidget->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); // 设置多选,单选
 ui.treeWidget->setColumnCount(1);  // 设置列的数目
 //ui.treeWidget->setStyleSheet("QTreeWidget::item{height:75px}");  // 设置QSS——行的高度(行间距),可以在designer里面设置!

// root 1
 myWidget* aRoot_widget_1 = new myWidget;
 QTreeWidgetItem* arootItem_1 = new QTreeWidgetItem(ui.treeWidget);
 ui.treeWidget->setItemWidget(arootItem_1, 0, aRoot_widget_1);

// root1->child1
 QTreeWidgetItem* childItem_1 = new QTreeWidgetItem(arootItem_1);
 childWidget* child_widget_1 = new childWidget;
 child_widget_1->SetInfo(QString("child_1"));
 ui.treeWidget->setItemWidget(childItem_1, 0, child_widget_1);

// root1->child2
 QTreeWidgetItem* childItem_2 = new QTreeWidgetItem(arootItem_1);
 childWidget* child_widget_2 = new childWidget;
 child_widget_2->SetInfo(QString("child_2"));
 ui.treeWidget->setItemWidget(childItem_2, 0, child_widget_2);

// root2
 myWidget* aRoot_widget_2 = new myWidget;
 QTreeWidgetItem* aRootItem_2 = new QTreeWidgetItem(ui.treeWidget);
 ui.treeWidget->setItemWidget(aRootItem_2, 0, aRoot_widget_2);

// root2->child3
 QTreeWidgetItem* childItem_3 = new QTreeWidgetItem(aRootItem_2);
 childWidget* child_widget_3 = new childWidget;
 child_widget_3->SetInfo(QString("child_3"));
 ui.treeWidget->setItemWidget(childItem_3, 0, child_widget_3);

// root2->child4
 QTreeWidgetItem* childItem_4 = new QTreeWidgetItem(aRootItem_2);
 childWidget* child_widget_4 = new childWidget;
 child_widget_4->SetInfo(QString("child_4"));
 ui.treeWidget->setItemWidget(childItem_4, 0, child_widget_4);

ui.treeWidget->removeItemWidget(childItem_4, 0);

// 说明:

1.myWidget和childWidget为自定义widget(继承于QWidget)widget控件,添加方法为在vs2008/2010/2012里面右键选择“添加类”->"Qt4/5GuiClass";

2.在添加自定义widget控件后在QTreeWidget里面可能会出现看不到自定义widget控件的问题,出现问题的原因是QTreeWidget控件的行间距没有设置正确,但是很奇怪的是通过QTreeWidget的setLineWidth方法却不能起作用,正确的做法是设置QTreeWidgetd的CSS属性,具体方法为右键选择“改变样式表...”(在designer里面进行操作),然后在里面添加

#treeWidget::item

{

height:75px;

width:300px;

}

其中#的意思为treeWidget为该样式表的名字,也可以选择直接输入height:75px;width:300px;表示不给该样式表起名字;

此外,还可以通过在代码中设置QTreeWidget的样式表,ui.treeWidget->setStyleSheet("QTreeWidget::item{height:75px}");

// one more(下划线)

text-decoration:underline;             // 下划线

text-decoration:overline;                     // 上划线

(QSS < CSS)

3.关于setItemWidget方法介绍:

void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget);

第一个参数为一个QTreeWidgetItem对象,需要明确的是我们的自定义的widget控件是依托于/存在于/放在QTreeWidgetItem对象上面的,这样以后就把QTreeWidgetItem对象与我们自定义的widget对象联系起来了;

第二个参数为列,指第几列;

第三个参数为我们自定义的widget控件。

需要理解QTreeWidget里面的父与子的关系!

4.关于QTreeWidgetItem的构造函数,这里用到了它的两种构造函数,一种是

explicit QTreeWidgetItem(QTreeWidget *view, int type = Type); (在本例中为构造root节点)

一种是:

explicit QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type);(在本例中为构造子节点,即root节点的字节点,所以parent即为通过上面构造函数创建的QTreeWidgetItem)。

5.本例效果图如下:

6.补注:

自定义widget被遮挡问题的解决办法除了上述解决办法外(上述解决办法有一个缺陷,即只能设置单一行高度,所有的行都用同一个行高度,不自由),最好的解决办法是设定自定义widget的最大宽度、高度和最小宽度、最小高度为自定义的宽度和高度即可解决该问题。

Qt QTreeWidget的行间距设置相关推荐

  1. QT QTreeWidget 行切换时改变背景色

    文章目录 QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 2.写信号槽函数: QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 当QtreeWidget 的选中状 ...

  2. 带复选框和简单描述的Qt QTreeWidget树形控件的简单使用

    Qt QTreeWidget树形控件的简单使用 具有选择框的树形控件 具有选择框的树形控件 效果:当选中顶层的树形节点时,子节点全部被选中:当取消选中顶层树形节点时,子节点全部被取消:当选中子节点时, ...

  3. Qt QTreeWidget树形控件用法详解

    文章目录 QTreeWidget控件的创建 QTreeWidget\QTreeView的关系和区别 QTreeWidgetItem类 QTreeWidget的实际应用 1) 添加结点 2) 给结点添加 ...

  4. 【Qt】Qt Creator中文输入设置

    #[Qt]Qt Creator中文输入设置 一.ubuntu中文输入法的设置 1.在终端中输入: $ ibus-setup 弹出界面如图: 2.选择中文输入法 3.点击右上角设置–>选择系统设置 ...

  5. 为利用 QT 制作的项目设置图标

    为利用 QT 制作的项目设置图标 在 .pro 文件末尾添加语句 RC_ICONS = logo.ico logo.ico 即为图标文件的名称

  6. Qt Creator共享项目设置

    Qt Creator共享项目设置 共享项目设置 更新共享设置 共享项目设置 t Creator将用户特定的项目设置存储在.user文件中.您可以在多个项目之间以.shared文件的形式共享这些设置.它 ...

  7. Qt Creator指定环境设置

    Qt Creator指定环境设置 指定环境设置 批量编辑 清除系统环境 使用环境变量 使用Qt Creator变量 指定环境设置 您可以在"构建设置"的"构建环境&quo ...

  8. Qt Creator指定编辑器设置

    Qt Creator指定编辑器设置 指定编辑器设置 指定编辑器设置 Qt Creator使用文件的MIME类型来确定用于打开文件的模式和编辑器.例如,Qt Creator在文本编辑器中以"编 ...

  9. Qt Creator指定运行设置

    Qt Creator指定运行设置 指定运行设置 为子项目创建运行配置 指定桌面设备类型的运行设置 指定Valgrind设置 启用调试 指定Android设备的运行设置 指定基于Linux的设备的运行设 ...

最新文章

  1. 文科生学python系列_文科生学 Python 系列 3:函数
  2. xmlUtil 解析 创建
  3. BAT大厂工程师必会Ansible,你还不来学?
  4. 计算任意两个数之间1出现的次数的思维过程
  5. 图片做背景撑开div
  6. bzoj 1083 繁忙的都市
  7. 教你如何防止电脑插入u盘后自动运行
  8. javascript中BOM介绍、屏幕尺寸、历史记录、URL解析、计算机信息获取、定时器、三大系列及兼容代码、封装动画函数、同步和异步
  9. Java入门系列-20-异常
  10. 高收益债券与杠杆收购:中国机会
  11. Java编程:弗洛伊德算法(无向图所有顶点最小路径)
  12. Ng第五课:Octave 教程(Octave Tutorial)
  13. BZOJ 2286 SDOI2011 消耗战 倍增LCA+单调栈
  14. 为您奉上Dicom文件格式属性清单,不谢!
  15. Excel VBA编程实现自动分页
  16. 大漠穷秋:全面解读Angular 4.0核心特性
  17. 基金男孩女孩的「养基」心碎史
  18. MySQL主从状态检查
  19. JavaWeb学习笔记(HTML语言)
  20. su组件在什么窗口_草图大师Sketchup全窗口显示快捷键是什么呢?

热门文章

  1. 分析师称iPhone 5S或提供多种显示屏尺寸
  2. 大数据必学Java基础(三十九):面向对象三大特性之一封装(Encapsulation)
  3. Android 项目必备(二十七)-->加密和解密
  4. 基于tp框架的自定义常用函数,包括图片操作、阿里云OSS、文件下载、短信验证码等...
  5. 【FLOOR函数的标量实现】
  6. 休闲零食新零售,满足更多消费者需求
  7. tap领取礼包显示服务器繁忙,王者争雄必读公告-王者争雄常见问题答疑-昆多手游...
  8. 2.6 基于ARDUINO UNO+MC20的路径显示功能
  9. 表情小作坊2.0上线啦
  10. Windows注册表背后的秘密