【mmoarpg网游源码】【vue render源码分析】【购票系统源码php】qtreewidget源码

时间:2024-12-23 01:22:52 编辑:弹幕云蹦迪源码下载 来源:sahara 源码

1.qtreewidgetitem函数clone出的节点如何设置其type?
2.Qt模型视图框架:QStyledItemDelegate、QTreeWidget、QTreeView
3.Qt中怎么实现Qtreewidget节点的撤销重做
4.QT6.3 + QTreeWidget 读取并显示Json数据

qtreewidget源码

qtreewidgetitem函数clone出的节点如何设置其type?

       从 QTreeWidgetItem 类的继承关系来看,它是继承自 QObject 类的。而 type() 方法是 QObject 类的一个虚函数,因此在 QTreeWidgetItem 类中并没有直接提供设置类型的mmoarpg网游源码方法。

       那么,如何在克隆出的节点中设置类型呢?可以通过重新实现 clone() 方法来实现。

       示例代码如下:

       class CustomTreeWidgetItem: public QTreeWidgetItem {

       public:

       CustomTreeWidgetItem(const CustomTreeWidgetItem& other): QTreeWidgetItem(other) {

       setType(other.type());

       }

       CustomTreeWidgetItem(QTreeWidgetItem* parent, int type = Type): QTreeWidgetItem(parent, type) { }

       QTreeWidgetItem* clone() const override {

       return new CustomTreeWidgetItem(*this);

       }

       void setType(int type) {

       QTreeWidgetItem::setType(type);

       }

       };

       在上述代码中,我们新建了一个 CustomTreeWidgetItem 类,它继承自 QTreeWidgetItem 类,并重写了 clone() 方法。在重新实现 clone() 方法时,我们创建了一个 CustomTreeWidgetItem 类型的新节点,并将重载后的vue render源码分析 setType() 方法用于设置节点的类型。这样,在调用 clone() 方法获得克隆节点后,就可以通过 setType() 方法设置节点的类型了。

       使用方法如下:

       QTreeWidgetItem* item = new QTreeWidgetItem();

       item->setType(QTreeWidgetItem::UserType + 1); // 设置类型为 UserType + 1

       QTreeWidgetItem* clonedItem = item->clone(); // 克隆节点

       dynamic_cast<CustomTreeWidgetItem*>(clonedItem)->setType(QTreeWidgetItem::UserType + 2); // 设置克隆出来的节点的类型为 UserType + 2

       在上述代码中,我们首先创建了一个类型为 UserType + 1 的 QTreeWidgetItem 节点,并将其克隆出来。然后,我们通过 dynamic_cast 将 clonedItem 转换为 CustomTreeWidgetItem 类型,再使用 setType() 方法将其类型设置为 UserType + 2。

Qt模型视图框架:QStyledItemDelegate、QTreeWidget、QTreeView

       一、QStyledItemDelegate描述

       QStyledItemDelegate是Qt项目视图的默认委托,负责绘制视图中的购票系统源码php每个项目,并在编辑时提供编辑器小部件。它默认安装在项目视图上,并为常见的数据类型(如布尔值、整数和字符串)实现显示和编辑功能。此委托可根据模型中项目的角色不同来绘制数据,并允许子类化以自定义绘制和编辑行为。通常建议在实现自定义委托或使用样式表时使用QStyledItemDelegate作为基类,除非需要提供自定义项目显示。

       二、QStyledItemDelegate成员函数

       1、QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index):用于创建编辑指定索引项目的编辑器小部件。此函数可设置编辑器的显示方式,通常在父小部件上设置样式。

       2、源码适配与移植QString displayText(const QVariant &value, const QLocale &locale):返回显示模型中Qt::DisplayRole角色的数据的字符串。此函数根据语言环境中的设置将值转换为QString。

       3、bool eventFilter(QObject *editor, QEvent *event):处理编辑器接收到的事件。默认处理一些按键事件,如在文本编辑器中按下Enter或Return键时不处理。

       4、void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index):初始化选项,用于显示指定索引的值。

       5、void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index):绘制指定索引的项目。此函数使用初始化的选项来决定绘制位置和样式。

       6、void setEditorData(QWidget *editor,简单网站作品源码 const QModelIndex &index):设置编辑器显示和编辑的数据。默认情况下,数据存储在编辑器的用户属性中。

       7、void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index):从编辑器获取数据并存储在模型中的指定索引处。

       8、QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index):返回显示指定索引项目所需的大小。

       9、void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index):根据选项更新编辑器的几何形状。

       三、QTreeWidget描述

       QTreeWidget提供了一个标准的树形小部件,用于展示具有层次结构的数据。创建树小部件时,需要设置列数,并可添加、展开或折叠项目。此小部件支持多种信号和函数,用于处理项目选择、编辑、激活和折叠/展开事件。

       四、QTreeWidget属性成员

       QTreeWidget提供了一系列属性,如columnCount、topLevelItemCount等,用于管理树的结构和外观。这些属性允许开发者控制树的列数、顶级项目的数量等。

       五、QTreeWidget信号和函数

       QTreeWidget信号用于通知事件,如项目选择改变、项目激活、内容改变、项目双击、鼠标进入、项目展开/折叠等。函数包括clear、collapseItem、expandItem等,用于操作树的结构和显示。

       六、QTreeView描述

       QTreeView实现了模型中项目的树表示形式,展示模型数据的层次结构。与QTreeWidget相比,QTreeView提供了更高级的特性,如动画、键盘焦点管理、排序和高度统一等。

       七、QTreeView属性成员

       QTreeView属性如allColumnsShowFocus、animated等,控制树视图的性能、动画、焦点显示和排序等功能。

       八、QTreeView成员函数

       QTreeView成员函数提供了树视图的管理功能,包括折叠、展开特定项目,以及处理项目折叠/展开事件。此外,还有函数用于调整列宽、排序等。

Qt中怎么实现Qtreewidget节点的撤销重做

       增与删

       下面是添加的功能:

       //这是添加根节点的功能实现this->connect(ui->Root_btn, SIGNAL(clicked(bool)), this, SLOT(addRoot()));void Widget::addRoot()

       {

       QString one = ui->first->text();

       QString two = ui->second->text();

       QString three = ui->third->text();

       QTreeWidgetItem* item = new QTreeWidgetItem();

       item->setText(0, one);

       item->setText(1, two);

       item->setText(2, three);

       ui->Tree->addTopLevelItem(item);

       }//这是添加叶子节点的实现this->connect(ui->Child_btn, SIGNAL(clicked(bool)), this, SLOT(addChild()));void Widget::addChild()

       {

       QString one = ui->first->text();

       QString two = ui->second->text();

       QString three = ui->third->text();

       QTreeWidgetItem* parent = ui->Tree->currentItem();

       QTreeWidgetItem* item = new QTreeWidgetItem();

       item->setText(0, one);

       item->setText(1, two);

       item->setText(2, three); parent->addChild(item);

       }

       添加叶子节点字需要注意父节点的获取就可以了。

       下面是删除节点的功能:

       this->connect(ui->DEL_btn, SIGNAL(clicked(bool)), this, SLOT(deleteNode()));

       void del(QTreeWidgetItem* node){ if(node->childCount() > 0)

       { for(int i = 0; i < node->childCount(); i ++)

       { del(node->child(i));

       }

       }

       else

       {

       delete node;

       }

       }

       void Widget::deleteNode()

       {

       QTreeWidgetItem* item = ui->Tree->currentItem();

       if(item->childCount() > 0)

       { for(int i = 0; i < item->childCount(); i ++)

       { del(item->child(i));

       }

       }

       delete item;

       }

       删除节点时记得循环删除这个节点下面的所有的子节点。

QT6.3 + QTreeWidget 读取并显示Json数据

       展示的Json数据如下所示,用于测试和演示。

       将Json数据通过在线展示网站呈现。

       以下是展示结果,直观地展示了Json数据的结构。

       相关代码部分,包含一个名为displayJsonTree()的函数,用于读取并展示Json数据。

       使用SetItem方法在QTreeWidget中设置项。

       进一步分析Json数据,通过函数AnalysisJsonObj和AnalysisJsonValue实现。

       运行代码后,结果显示,haha和haha1成功读取并显示。

       测试嵌套对象,确保代码能够正确处理复杂Json结构。

       为了方便检索和查阅,本文已归类并收录。