原贴地址:https://blog.csdn.net/weixin_40569991/article/details/83154308
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDialog> #include <QString> #include <QTreeWidgetItem> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); public slots: void on_tv_Source_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btn_Add_clicked(); void on_btn_Modify_clicked(); void on_btn_Del_clicked(); void on_btn_AddRoot_clicked(); private: Ui::Widget *ui; QTreeWidgetItem * AddTreeRoot(QString name,QString desc); QTreeWidgetItem * AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc); }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QStringList> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); ui->tv_Source->setColumnCount(2); ui->tv_Source->setHeaderLabels(QStringList()<<"Name"<<"Description"); //ui->tv_Source->setHeaderHidden(true); QTreeWidgetItem * beiJingItem = AddTreeRoot("bejing","city"); AddTreeNode(beiJingItem,"haidian","HaiDian"); AddTreeNode(beiJingItem,"chaoYang","chaoYang"); AddTreeNode(beiJingItem,"fengTai","fengTai"); QTreeWidgetItem * HeiBeiItem =AddTreeRoot("hebei","city"); AddTreeNode(HeiBeiItem,"baoDing","baoDing"); AddTreeNode(HeiBeiItem,"shiJiaZhuang","shiJiaZhuang"); } Widget::~Widget() { delete ui; } QTreeWidgetItem * Widget::AddTreeRoot(QString name,QString desc) { QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc); ui->tv_Source->addTopLevelItem(item); return item; } QTreeWidgetItem * Widget::AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc) { QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc); parent->addChild(item); return item; } void Widget::on_tv_Source_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) { if(current==NULL) return; if(previous!=NULL) { previous->setBackground(0,Qt::transparent); previous->setBackground(1,Qt::transparent); previous->setTextColor(0,Qt::black); previous->setTextColor(1,Qt::black); } current->setTextColor(0,Qt::blue); current->setTextColor(1,Qt::blue); current->setBackground(0,Qt::red); current->setBackground(1,Qt::red); } //添加 void Widget::on_btn_Add_clicked() { QTreeWidgetItem * item= ui->tv_Source->currentItem(); if(item!=NULL) { AddTreeNode(item,"new","new"); } else { AddTreeRoot("new","new"); } } //修改 void Widget::on_btn_Modify_clicked() { QTreeWidgetItem * currentItem = ui->tv_Source->currentItem(); if(currentItem==NULL) { return; } for(int i=0;i<currentItem->columnCount();i++) { currentItem->setText(i,tr("Modify")+QString::number(i)); } } //删除 void Widget::on_btn_Del_clicked() { QTreeWidgetItem * currentItem = ui->tv_Source->currentItem(); if(currentItem==NULL) { return; } //如果没有父节点就直接删除 if(currentItem->parent()==NULL) { delete ui->tv_Source->takeTopLevelItem(ui->tv_Source->currentIndex().row()); } else { //如果有父节点就要用父节点的takeChild删除节点 delete currentItem->parent()->takeChild(ui->tv_Source->currentIndex().row()); } } void Widget::on_btn_AddRoot_clicked() { AddTreeRoot("new","new"); }
发表评论