• 今晚又失眠了,最近睡眠质量很差啊。

  • QsciScintilla 一个很好用的文本编辑器库

  • 愿逝者安息,愿生者奋发,愿祖国昌盛,致敬英雄

  • 身体是革命的本钱,猿(媛)仔们注意身体呀

  • 所谓”事务“就是指一组 SQL 命令,这些命令要么一起执行,要么都不被执行。

  • 遍历 for 循环时将,将外层写成函数,内层写成回调函数模式。

  • 网站被攻击了烦死了,今天一天都不能访问了

  • wordpress 官网抽风不能升级了!

  • Python 中 input 函数返回的始终是一个字符串。

  • 只有符合整数规范的字符串类数据,才能被 int()强制转换。因此:字符串’3.8’是不能被转换哟

QTreeWidget简单使用例子(可拖拽)

Qt相关 2020-09-21 16:48:04 1955次浏览 扫描二维码
文章目录[隐藏]

前言

使用Qt好久了,发现自己还没有用过QTreeWidget。今天尝试了一下写了个简单的 demo。

demo 功能

1. 支持最简单的QTreeWidget显示;

2. 支持显示多列;

3. 支持多个树之间拖拽,也支持单个树之间拖拽(非自定义);

4. 列平分。

demo 代码

TreeDrag 类(h/cpp)

#ifndef TREEDRAG_H
#define TREEDRAG_H

#include <QWidget>
#include <QTreeWidget>
#include "qctreewidget.h"

namespace Ui {
class TreeDrag;
}

class TreeDrag : public QWidget
{
    Q_OBJECT

public:
    explicit TreeDrag(QWidget *parent = nullptr);
    ~TreeDrag();


private:
    void setTreeSettings(QTreeWidget *treeWidget);
private:
    Ui::TreeDrag *ui;


};

#endif // TREEDRAG_H
#include "treedrag.h"
#include "ui_treedrag.h"

TreeDrag::TreeDrag(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::TreeDrag)
{
    ui->setupUi(this);

    setTreeSettings(ui->treeWidget);
    setTreeSettings(ui->treeWidget_2);
    setTreeSettings(ui->treeWidget_3);

}

TreeDrag::~TreeDrag()
{
    delete ui;
}

void TreeDrag::setTreeSettings(QTreeWidget* treeWidget)
{
    QStringList headers;
    headers << "name" << "cmd";
    treeWidget->setColumnCount(2);
    treeWidget->setHeaderLabels(headers); // 设置头
    treeWidget->setAcceptDrops(true); // 接受拖拽内容
    treeWidget->setDragEnabled(true); // 设置拖拽使能
    treeWidget->setSelectionBehavior(QAbstractItemView::SelectRows); // 单行选中
    treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch); // 列平分
}


QCTreeWidget 类(h/cpp)

#ifndef QCTREEWIDGET_H
#define QCTREEWIDGET_H

#include <QWidget>
#include <QTreeWidget>

class QCTreeWidget : public QTreeWidget
{
    Q_OBJECT
public:
    explicit QCTreeWidget(QWidget *parent = nullptr);


    void setTreeData();
    void setTreeSettings();

signals:

private:


};

#endif // QCTREEWIDGET_H
#include "qctreewidget.h"

QCTreeWidget::QCTreeWidget(QWidget *parent) : QTreeWidget(parent)
{
    setTreeData();
    setTreeSettings();
}


void QCTreeWidget::setTreeData()
{


    QTreeWidgetItem* item = nullptr;
    QTreeWidgetItem* itemChild = nullptr;

    for(int i = 0; i < 2; ++i)
    {
        item = new QTreeWidgetItem(this);
        item->setText(0, QString("item_0_%1").arg(i));
        item->setText(1, QString("item_1_%1").arg(i));
        this->addTopLevelItem(item);

        itemChild = new QTreeWidgetItem(item);
        for(int j = 0; j < 2; ++j)
        {
            itemChild->setText(j, QString("itemChild_%1_%2").arg(j).arg(i));
        }
    }
}

void QCTreeWidget::setTreeSettings()
{
    /*QStringList headers;
    headers << "name" << "cmd";
    this->setColumnCount(2);
    this->setHeaderLabels(headers);
    this->setAcceptDrops(true);
    this->setDragEnabled(true);
    this->setSelectionBehavior(QAbstractItemView::SelectRows);*/
}

demo 效果

QTreeWidget简单使用例子(可拖拽)

喜欢 (3)