QTreeView QTreeWidget改变图标大小
生活随笔
收集整理的這篇文章主要介紹了
QTreeView QTreeWidget改变图标大小
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
零、未改變圖標大小
一、設(shè)置所有圖標大小
ui->treeWidget->setIconSize(QSize(64, 64));結(jié)果如下圖所示。
?二、自定義某一行的圖標大小
使用委托的方法,由我們自己來繪畫每一個item。需要子類化一個委托類。直接看代碼。
//mydelegate.h
#ifndef MYDELEGATE_H #define MYDELEGATE_H#include <QWidget> #include <QStyledItemDelegate>class MyDelegate : public QStyledItemDelegate {Q_OBJECT public:explicit MyDelegate(QWidget *parent = nullptr);void paint(QPainter *painter,const QStyleOptionViewItem &option, const QModelIndex &index) const override;QSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const override; };#endif // MYDELEGATE_H//mydelegate.cpp
#include "mydelegate.h" #include <QPainter> #include <QApplication>MyDelegate::MyDelegate(QWidget *parent) : QStyledItemDelegate(parent) { }void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,const QModelIndex &index) const {/* mouze 這里我們的需求是將根節(jié)點的圖標放大,子節(jié)點的圖標也放大但比根節(jié)點小。參考QStyledItemDelegate類的paint函數(shù) */QStyleOptionViewItem opt = option;initStyleOption(&opt, index);if (!index.parent().isValid())//一級節(jié)點{opt.decorationSize = QSize(36, 36);//設(shè)置圖標大小 根據(jù)需求修改數(shù)值}else{opt.decorationSize = QSize(24, 24);}const QWidget *widget = NULL;widget = option.widget;QStyle *style = widget ? widget->style() : QApplication::style();style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget); }QSize MyDelegate::sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const {//mouze 根據(jù)需求修改數(shù)值if (!index.parent().isValid())//一級節(jié)點{return QSize(24, 24);}else{return QSize(18, 18);}return QStyledItemDelegate::sizeHint(option, index); }子類化委托類后,給樹控件設(shè)置委托。
ui->treeWidget->setItemDelegate(new MyDelegate); //設(shè)置委托結(jié)果如下圖所示。
本文鏈接:https://blog.csdn.net/dhvdhd/article/details/119968424
總結(jié)
以上是生活随笔為你收集整理的QTreeView QTreeWidget改变图标大小的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编写一个汽车类,有属性:品牌、型
- 下一篇: 将Excel中的信息生成奖状