精华内容
下载资源
问答
  • 这两天写了个基于sqlite的学生管理系统,同时也复习了qt的一些知识,也...一、 如何为treewidgetitem添加右键菜单 第一步: // 设置右键编辑  ui.TREEwidget->setContextMenuPolicy(Qt::CustomContextMenu);

    这两天写了个基于sqlite的学生管理系统,同时也复习了qt的一些知识,也加深了自己队sqlite用法的理解。

     

    在此,总结下自己在写的时候复习到的知识。


    一、  如何为treewidgetitem添加右键菜单

    第一步:

    // 设置右键编辑

       ui.TREEwidget->setContextMenuPolicy(Qt::CustomContextMenu);

     

    第二步 :

    Connect 相关的信号和槽;

        connect(ui.TREEwidget, SIGNAL(customContextMenuRequested(const QPoint&)),this,

           SLOT(OnlistContextMenu(const QPoint&)));

     

    第三步  设置右键菜单项;

     

    int demo003::OnlistContextMenu(const QPoint&pos)

    {

     

        QMenu menu;

        menu.addAction(ui.action_upload);

        menu.addAction(ui.action_delete);

        QPoint pt_global =ui.TREEwidget->mapToGlobal(pos);

        menu.exec(pt_global);

     

        return0;

    }

    当然 这一切的前提是,你已经在qtdesigner里面添加好了相关的action,

    并且每个action都有相关的槽函数;


    展开全文
  • 首先connect一下到槽函数: ...treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int))); treeItemChanged函数如下: void KqDlgXzpjzbTree::treeItemChanged(...

    首先connect一下到槽函数:

    connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int)));

    treeItemChanged函数如下:

    void KqDlgXzpjzbTree::treeItemChanged(QTreeWidgetItem *item, int column)
    {
        QString itemText = item->text(0);
        if (item->checkState(0) == Qt::Checked)
        {
            QTreeWidgetItem *parent = item->parent();
            int cnt = item->childCount();
            if (cnt >0)
            {
                for (int i = 0;i < cnt;i++)
                {
                     item->child(i)->setCheckState(0,Qt::Checked);
                }
            }
            else
            {
                updateParentItem(item);
            }
        }
        else if (item->checkState(0) == Qt::Unchecked)
        {
            int cnt = item->childCount();
            if (cnt > 0)
            {
                for (int i = 0;i < cnt;i++)
                {
                    item->child(i)->setCheckState(0,Qt::Unchecked);
                }
            }
            else
            {
                updateParentItem(item);
            }
        }
    }

    updateParentItem(item);函数如下:

    void KqDlgXzpjzbTree::updateParentItem(QTreeWidgetItem *item)
    {
        QTreeWidgetItem *parent = item->parent();
        if(parent == NULL)
        {
            return;
        }
        //选中的子节点个数
        int selectedCount = 0;
        int childCount = parent->childCount();
        for (int i = 0; i < childCount; i++)
        {
            QTreeWidgetItem *childItem = parent->child(i);
            if (childItem->checkState(0) == Qt::Checked)
            {
                selectedCount++;
            }
        }
        if (selectedCount <= 0)
        {
            //未选中状态
            parent->setCheckState(0, Qt::Unchecked);
        }
        else if (selectedCount > 0 && selectedCount < childCount)
        {
            //部分选中状态
            parent->setCheckState(0, Qt::PartiallyChecked);
        }
        else if (selectedCount == childCount)
        {
            //选中状态
            parent->setCheckState(0, Qt::Checked);
        }
    }

     

    最美的不是下雨天,是曾与你躲过雨的屋檐。《不能说的秘密》

     

    展开全文
  • QT中treeWidgetItem使用

    2020-02-10 21:36:12
    { ui->setupUi(this);...treeWidget->setHeaderLabels(QStringList()<<"英雄姓名"<<"英雄介绍"); //添加头项 QStringList l,m,f; //相当于C++中 list<string> l l<<"力量"...
    {
        ui->setupUi(this);
    
        ui->treeWidget->setHeaderLabels(QStringList()<<"英雄姓名"<<"英雄介绍");  //添加头项
        QStringList l,m,f;     //相当于C++中  list<string> l
        l<<"力量";
        m<<"敏捷";
        f<<"防御";
        QTreeWidgetItem *LL= new QTreeWidgetItem(l);   //创建树项
        QTreeWidgetItem *MM= new QTreeWidgetItem(m);
        QTreeWidgetItem *FF= new QTreeWidgetItem(f);
        ui->treeWidget->addTopLevelItem(LL);//添加
        ui->treeWidget->addTopLevelItem(MM);
        ui->treeWidget->addTopLevelItem(FF);
        QStringList ll,mm,ff;
        ll<<"力量狗";
        mm<<"敏捷狗";
        ff<<"防御狗";
        QTreeWidgetItem *LLL= new QTreeWidgetItem(ll);
        QTreeWidgetItem *MMM= new QTreeWidgetItem(mm);
        QTreeWidgetItem *FFF= new QTreeWidgetItem(ff);
        LL->addChild(LLL);//添加子项
        MM->addChild(MMM);
        FF->addChild(FFF);
    }
    

     

    展开全文
  • Qt TreeWidget的增删改

    2016-06-02 16:58:15
    在窗体上放一个TreeWidget控件和四个PushButton加一个Horizontal Spacer 布局如图 给树添加元素节点的方法和实现 .h文件 QTreeWidgetItem * AddTreeRoot(QString name,QString desc); QTreeWidgetItem * ...

    在窗体上放一个TreeWidget控件和四个PushButton加一个Horizontal Spacer

    布局如图

    给树添加元素节点的方法和实现

    .h文件

        QTreeWidgetItem * AddTreeRoot(QString name,QString desc);
        QTreeWidgetItem * AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc);
    .cpp文件

    QTreeWidgetItem * TreeViewView::AddTreeRoot(QString name,QString desc)
    {
        QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc);
        ui->tv_Source->addTopLevelItem(item);
        return item;
    }
    
    QTreeWidgetItem * TreeViewView::AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc)
    {
        QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc);
        parent->addChild(item);
        return item;
    }
    在构造方法里添加元素设置树的列数和标题的名称
    当然可以设置Header不显示,根据你的需求定

    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");

    添加事件相对来说比较简单
    直接调用我的前边写的方法,因为TreeWidget一直是选中状态就加了一个

    添加根节点的槽

    void TreeViewView::on_btn_Add_clicked()
    {
        QTreeWidgetItem * item= ui->tv_Source->currentItem();
        if(item!=Q_NULLPTR)
        {
            AddTreeNode(item,"new","new");
        }
        else
        {
            AddTreeRoot("new","new");
        }
    }
    
    void TreeViewView::on_btn_AddRoot_clicked()
    {
        AddTreeRoot("new","new");
    }
    修改方法也很简单
    void TreeViewView::on_btn_Modify_clicked()
    {
        QTreeWidgetItem * currentItem = ui->tv_Source->currentItem();
    
        if(currentItem==Q_NULLPTR)
        {
            return;
        }
        for(int i=0;i<currentItem->columnCount();i++)
        {
            currentItem->setText(i,tr("Modify")+QString::number(i));
        }
    }

    删除槽就要考虑的多一点
    要看它有没有父节点
    void TreeViewView::on_btn_Del_clicked()
    {
        QTreeWidgetItem * currentItem = ui->tv_Source->currentItem();
    
        if(currentItem==Q_NULLPTR)
        {
            return;
        }
        //如果没有父节点就直接删除
        if(currentItem->parent()==Q_NULLPTR)
        {
            delete ui->tv_Source->takeTopLevelItem(ui->tv_Source->currentIndex().row());
        }
        else
        {
            //如果有父节点就要用父节点的takeChild删除节点
            delete currentItem->parent()->takeChild(ui->tv_Source->currentIndex().row());
        }
    }

    看一下效果

    完整代码
    .h文件



    #ifndef TREEVIEWVIEW_H
    #define TREEVIEWVIEW_H
    
    #include <QDialog>
    #include<QString>
    #include<QTreeWidgetItem>
    namespace Ui {
    class TreeViewView;
    }
    
    class TreeViewView : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit TreeViewView(QWidget *parent = 0);
        ~TreeViewView();
    
    private slots:
        void on_tv_Source_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
    
        void on_btn_Add_clicked();
    
        void on_btn_AddRoot_clicked();
    
        void on_btn_Del_clicked();
    
        void on_btn_Modify_clicked();
    
    private:
        Ui::TreeViewView *ui;
        QTreeWidgetItem * AddTreeRoot(QString name,QString desc);
        QTreeWidgetItem * AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc);
    };
    
    #endif // TREEVIEWVIEW_H
    .cpp文件

    #include "treeviewview.h"
    #include "ui_treeviewview.h"
    #include <QStringList>
    TreeViewView::TreeViewView(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::TreeViewView)
    {
        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");
    }
    
    TreeViewView::~TreeViewView()
    {
        delete ui;
    }
    
    QTreeWidgetItem * TreeViewView::AddTreeRoot(QString name,QString desc)
    {
        QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc);
        ui->tv_Source->addTopLevelItem(item);
        return item;
    }
    
    QTreeWidgetItem * TreeViewView::AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc)
    {
        QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc);
        parent->addChild(item);
        return item;
    }
    
    void TreeViewView::on_tv_Source_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
    {
        if(current==Q_NULLPTR)return;
        if(previous!=Q_NULLPTR)
        {
            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 TreeViewView::on_btn_Add_clicked()
    {
        QTreeWidgetItem * item= ui->tv_Source->currentItem();
        if(item!=Q_NULLPTR)
        {
            AddTreeNode(item,"new","new");
        }
        else
        {
            AddTreeRoot("new","new");
        }
    }
    
    void TreeViewView::on_btn_AddRoot_clicked()
    {
        AddTreeRoot("new","new");
    }
    
    void TreeViewView::on_btn_Del_clicked()
    {
        QTreeWidgetItem * currentItem = ui->tv_Source->currentItem();
    
        if(currentItem==Q_NULLPTR)
        {
            return;
        }
        //如果没有父节点就直接删除
        if(currentItem->parent()==Q_NULLPTR)
        {
            delete ui->tv_Source->takeTopLevelItem(ui->tv_Source->currentIndex().row());
        }
        else
        {
            //如果有父节点就要用父节点的takeChild删除节点
            delete currentItem->parent()->takeChild(ui->tv_Source->currentIndex().row());
        }
    }
    
    void TreeViewView::on_btn_Modify_clicked()
    {
        QTreeWidgetItem * currentItem = ui->tv_Source->currentItem();
    
        if(currentItem==Q_NULLPTR)
        {
            return;
        }
        for(int i=0;i<currentItem->columnCount();i++)
        {
            currentItem->setText(i,tr("Modify")+QString::number(i));
        }
    }






    展开全文
  • Qt中的treeWidget使用

    千次阅读 2014-04-22 14:23:48
    QT GUI中有treeWidget部件,将该控件在Gui中布局好,假设其对象名为treeWidget。...树形结构通过QTreeWidget类和QTreeWidgetItem类实现,QTreeWidgetItem类实现结点的添加。上图代码实现如下:  
  • Qt 学习笔记 TreeWidget 增删改

    千次阅读 2016-10-07 00:53:49
    在窗体上放一个TreeWidget控件和四个PushButton加一个Horizontal Spacer 布局如图 给树添加元素节点的方法和实现 .h文件 QTreeWidgetItem * AddTreeRoot(QString name,QString desc); QTreeWidgetItem * ...
  • 从uiuiui界面拉一个出来,往里面添加选项 QListWidgetItem* item1 = new QListWidgetItem("锄禾日当午"); ui->listWidget->addItem(item1);//放QListWidgetItem也行 ui->listWidget->addItem("汗滴禾...
  • 在我通过添加QTreeWidgetItems来创建QTreeWidgetItems,它将TreeWidget作为父级,然后再次创建QTreeWidgetItems,它将上面的QTreeWidgetItem作为父级。在现在,它像左图像一样开始,但是我希望...
  • 在pyqt中使用treewidget,然后想清空此widget,为了简便,使用了clear() 槽,但是后来再次添加item的时候报错:--------------------------------underlying C/C++ object has been deleted----------------------...
  • 目录 1. 成品 2. 树形结构 1. 成品 最近在做项目过程中用到了QTreeWidget,就这里记录下... 树形结构是通过QTreeWidget 和QTreeWidgetItem 类实现的,QTreeWidgetItem 负责添加节点。 1.QTreeWidget类中的常...
  • 点击的父节点 显示的是在主枝干 点击添加了四个子节点 选中勾选。 注意全勾选的区别。 删除添加子节点2 把添加子节点3–>改成编辑啦 ...QTreeWidgetItem> #include <QContextMenuEven.
  • 准备给QtreeWidgetItem设置外部图片Icon,以为直接把图片复制到工程根目录下,然后程序里写路径就可以了,结果我错了,没有这么简单。后来请教了别人才知道应该把图片作为Qt资源文件添加进去,然后才可以使用。首先...
  • QTreewidgetItem关键字高亮

    千次阅读 2015-08-21 11:23:01
    思路为:给QTreeWidget添加QStyledItemDelegate委托,然后重新paint.代码可以优化,有兴趣的话。#include "treewidget_styledItemDelegate.h" #include #include #include treewidget_styledItemDelegate::...
  • 目前支持添加、删除、勾选QTreeWidgetItem。同时可以拖拽QTreeWidgetItem用来形成新的层级关系。同时支持从另一个TreeWidget导入到本TreeWidget上面。且维持同样的导入层级关系。 添加实现思路 根据右键选择的...
  • //初始化TreeWidget项目 QTreeWidgetItem *item1=new QTreeWidgetItem; //项目图标 item1->setIcon(0,button_ico_add_friends); //列数 //图标大小 item1->setSizeHint(0,QSize(20,20)); //项目文字 item1->...
  • QTreeWidget添加了多个子节点,只能显示其中一个子节点,我不知道是不是插入部分有问题 ``` QTreeWidgetItem *Top1Item = new QTreeWidgetItem(); QTreeWidgetItem *Top2Item = new QTreeWidgetItem; ...
  • 通过递归遍历添加子项到treewidget中,测试代码已通过,举例为遍历添加/home/XXX下所有文件。解析和详细代码如下:  1.首先在main函数中创建目录根项。  QString rootpath="/home/XXX";  QTreeWidgetItem* ...
  • qtreewidget 添加复选按钮

    千次阅读 2016-04-11 15:30:43
    QStringList root; ... QTreeWidgetItem *m_pTreeItem = new QTreeWidgetItem(ui->treeWidget, root);  m_pTreeItem->setData(0, Qt::UserRole, 0);  //m_pTreeItem->setCheckState();  //m
  • 获得点击的节点 item 实例化一个菜单对象menu,注意给菜单传入父类,决定了菜单归属于哪个组件在哪个组件上显示 为菜单添加多个动作 addAction,返回值为...item = self.treeWidget_2.currentItem() menu = QMenu(se...
  • 今天用代码实现了 一棵树,结果再添加到第三层以后,以下的子节点就看不见了。   void QTestTree::add_Parent() {  QTreeWidgetItem *A = new QTreeWidgetItem(QStringList()  (ui.treeWidget->currentItem...
  • QTreeWidget添加子节点并响应checkBox信号,需要写两个函数,一个是Update(),一个是响应slotCheckClicked...connect(m_ui.treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(slotCheckClicked(Q...
  • Qt QTreeWidget 详解

    千次阅读 2020-11-23 15:21:31
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget); topItem1->setText(0,"百度"); ui->treeWidget->addTopLevelItem(topItem1); 2.设置表头隐藏,展开所有项 //隐藏表头 ui->...
  • QTreeWidget 用法总结

    千次阅读 2017-02-08 22:08:04
    一、设置列的宽度 、数量  setColumnCount(1); //数量   setColumnWidth(0,100);...QTreeWidgetItem* item = new QTreeWidgetItem(ui.treeWidget); item->setText(0,"nihao"); item->setText(1,"nihao");
  • 6. QTreeWidget 树控件

    2021-01-06 19:49:50
    设置头 ...QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< "力量"); 添加根节点到树控件上 ui->treeWidget->addTopLevelItem(liItem); 添加子节点 liItem->addC..
  • 编写Qt界面程序总结

    2020-08-03 20:01:41
    动态创建的如tableWidget中的item,treeWidget中的item等一些随着数据变化而变化的项,在程序中通过代码new;QTimer QDialog 等的创建通过代码new; 3)treeWidget列表项、tableWidget表头列表等一些固定的项名,图标...
  • Qt QtreeWidget树形结构图表

    千次阅读 2017-10-17 13:22:42
    本例子采用treewidget类:他继承...三个root节点,每个root节点在添加child节点对应在child节点里添加item(项)。 具体看: QTreeWidgetItem *additem(); void addroot(QTreeWidget *rootwidget,QStringList list)///
  • 除了一级item在定义之时,就确定了是在文件treeWidget里;其他的二级,三级ite等,通过一级item的->addchild()操作来进行继承。 void frmMain::fucInitGbxTreeBar() { ui->treeWidget->setColumnCount(1)...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

treewidget添加item