qt中QTreeWidget控件的使用

引言

在按照项目设计的样式来实现的时候,发现了一些问题,幸运的是最终找到了解决的方法。

详情

1.QTreeWidget设置列数和隐藏头(这里指的是有1所在的那个部位)

ui->treeWidget->setColumnCount(1);//设置有1列
 ui->treeWidget->header()->hide();//设置隐藏头

2.设置某一项的高度

QTreeWidgetItem *rootItem = new QTreeWidgetItem(ui->treeWidget);//创建QTreeWidget的项
rootItem->setText(0,QStringLiteral("公司"));//设置项的文本
rootItem->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable);//设置项的属性,可选择,可使用
rootItem->setIcon(0,QIcon(":/new/prefix1/images/logo.png"));//设置项的图标
rootItem->setSizeHint(0,QSize(0,70));//设置行高

3.设置只隐藏根节点的箭头

ui->treeWidget->setRootIsDecorated(false);//设置只隐藏根节点的箭头

4.通过向ui文件中拖入控件QStackWidget,先根据程序运行中得到的数据的组数,在QStackWidget中创建几组窗口,用于与QTreeWidget窗口中的项绑定,实现点击QTreeWidget来切换不同的堆栈窗口。

    //创建窗口,窗口中创建滚动区域,将窗口添加到堆栈窗口中
    rootWidget = new QWidget();

    QScrollArea *rootArea = new QScrollArea(rootWidget);
    rootArea->setGeometry(0,0,677,552);
    rootArea->setWidgetResizable(false);
    //滚动区域的窗口
    QWidget *scrollWidget = new QWidget();
    scrollWidget->setGeometry(0,0,677,600);
    scrollWidget->setMinimumSize(677,552);
    rootArea->setWidget(scrollWidget);

    QHBoxLayout *hLayout = new QHBoxLayout(rootWidget);
    hLayout->addWidget(rootArea);
    hLayout->setContentsMargins(0,0,0,0);
    hLayout->setSpacing(0);

    //设置窗口的背景色
    rootWidget->setPalette(QPalette(Qt::yellow));
    rootWidget->setAutoFillBackground(true);    
    //项堆栈窗口中添加创建好的窗口
    ui->stackedWidget->addWidget(rootWidget);

	//绑定树状控件的itemclicked信号,实现点击某一个项,跳转到不同的堆栈窗口
    connect(ui->treeWidget,&QTreeWidget::itemClicked,this,&ImDialog::onCurrentWidget);

5.设置QTreeWidget的项的高度,可以直接采用项的函数setSizeHint,也可以按照下面这种方式来实现。
先封装另一个类,类中重写函数sizeHint。

#ifndef MYDELEGATE_HPP
#define MYDELEGATE_HPP

#include <QApplication>
#include <QStyledItemDelegate>

/********************************************
        ======功能描述:=======
        重写sizeHint
********************************************/

class Delegate : public QStyledItemDelegate
{
public:
    explicit Delegate(QObject *parent = nullptr) :
        QStyledItemDelegate(parent){
    }

    QSize sizeHint(const QStyleOptionViewItem &option,
                   const QModelIndex &index) const override {
        return QStyledItemDelegate::sizeHint(option, index)
                + index.data(Qt::UserRole).toSize();
    }
};

#endif // MYDELEGATE_HPP

使用的时候,像下面这样使用。

ui->treeWidget->setItemDelegate(new Delegate(this));//可以直接这样用
rootItem->setData(0,Qt::UserRole,QSize(0,40));//可以直接这样用

便能设置QTreeWidget的项的高度。其中rootItem是QTreeWidgetItem类的指针。
6.QTreeWidget将项的箭头放在右边

ui->treeWidget->setLayoutDirection(Qt::RightToLeft);//将箭头放在右边,所有的控件都会从右向左排列

这样所有的箭头都在右边,貌似项的文本也会右对齐。
以上只是记录了大体思路和部分功能函数,仅供参考。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩上风骋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值