精华内容
下载资源
问答
  • QTreeWidgetItem类型的项构建以后,可以通过addChild(QTreeWidgetItem child)方法在该项中的子节点最后加入另一个项child作为该项的子项,也可以通过addChildren(iter[QTreeWidgetItem] children)将一个迭代类型...
  • TreeWidget添加根/子节点,删除节点,修改节点

    万次阅读 多人点赞 2018-10-18 22:41:20
    拖一个TreeWidget 控件 改名 tv_Source 拖拉四个Button 按钮 分别取名btn_AddRoot, btn_Add, btn_Del, btn_Modify 给四个按钮添加槽函数(clicked) widget.h #ifndef WIDGET_H #define WIDGET_H #...

    拖一个TreeWidget 控件 改名 tv_Source

    拖拉四个Button 按钮 分别取名btn_AddRoot,  btn_Add,  btn_Del,   btn_Modify

    给四个按钮添加槽函数(clicked)

    widget.h

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

    实现效果: 

    源码下载地址:https://download.csdn.net/download/weixin_40569991/10730744 

    参考:https://www.cnblogs.com/li-peng/p/3652287.html

    展开全文
  • 这两天写了个基于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都有相关的槽函数;


    展开全文
  • QTreeWidget中添加QTreeWidgetItem

    千次阅读 2019-03-12 09:37:52
    记录一下QTreeWidget和QTreeWidgetItem在Qt中的应用,示例如下图所示 首先需要建立QTreeWidget对象 QHBoxLayout *hLayout = new QHBoxLayout(); QTreeWidget *CameraTree = new QTreeWidget(this); CameraTree-...

    记录一下QTreeWidget和QTreeWidgetItem在Qt中的应用,示例如下图所示

    首先需要建立QTreeWidget对象

    QHBoxLayout	*hLayout = new QHBoxLayout();
    QTreeWidget *CameraTree = new QTreeWidget(this);
    CameraTree->setColumnCount(2);//设置列
    CameraTree->setHeaderLabels(QStringList()<<"feature"<<"value");//设置标题
    hLayout->addWidget(CameraTree);

    然后使用    QList<QTreeWidgetItem *> 类建立一个对象items,再使用QTreeWidgetItem建立first、second等等,想建立几个就建立几个,然后使用items.append(first)关联起来,最后使用 CameraTree->insertTopLevelItems(0, items)插入为顶端LevelItems

    QList<QTreeWidgetItem *> items;
    //items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("first"))));
    
    first = new QTreeWidgetItem;
    first->setText(0,"first");
    items.append(first);
    
    second = new QTreeWidgetItem;   //添加第二个父节点
    second->setText(0, tr("second"));
    items.append(second);
    CameraTree->insertTopLevelItems(0, items);
    first->setHidden(false);//设置隐藏
    second->setHidden(false);//设置隐藏

    再继续就可以给每一个添加进去的QTreeWidgetItem再添加控件或者child,使用first->addChild(item_ImageFormatControl)中addchild是父对象添加子对象函数,可以一直下去,不断添加...,CameraTree->setItemWidget(itemWidth, 1, spBoxckBoxWidget)中setItemWidget是在CameraTree添加的itemWidth对象中的第一列添加控控件(可以添加多个控件,效果图所示,代码如下)

    QCheckBox *ckBox = new QCheckBox;
    ckBox->setText("CheckBox");
    ckBox->setChecked(true);
    //ckBox->setFixedHeight(20);
    QSpinBox *spBox = new QSpinBox;
    //spBox->setFixedHeight(20);
    QHBoxLayout *spBoxckBoxHBoxLayout = new QHBoxLayout();
    spBoxckBoxHBoxLayout->addWidget(ckBox);
    spBoxckBoxHBoxLayout->addWidget(spBox);
    
    QWidget *spBoxckBoxWidget = new QWidget();
    spBoxckBoxWidget->setLayout(spBoxckBoxHBoxLayout);
    
    QTreeWidgetItem *item_ImageFormatControl = new QTreeWidgetItem;
    item_ImageFormatControl->setText(0, "Image Format Control");
    QTreeWidgetItem *item_AnalogControl = new QTreeWidgetItem;
    item_AnalogControl->setText(0,"Analog Control");
    QTreeWidgetItem *item_ImageQualityControl = new QTreeWidgetItem;
    item_ImageQualityControl->setText(0, "Image Quality Control");
    first->addChild(item_ImageFormatControl);
    first->addChild(item_AnalogControl);
    first->addChild(item_ImageQualityControl);
    
    QTreeWidgetItem *itemWidth = new QTreeWidgetItem;
    itemWidth->setText(0, "Width");
    	
    item_ImageFormatControl->addChild(itemWidth);
    //CameraTree->setItemWidget(item, 1, spBox);
    CameraTree->setItemWidget(itemWidth, 1, spBoxckBoxWidget);                //设置ckBox为item的第二列
    	
    QTreeWidgetItem *itemPixelFormat = new QTreeWidgetItem;
    itemPixelFormat->setText(0, "Pixel Format");
    item_ImageFormatControl->addChild(itemPixelFormat);
    
    QComboBox *comboBoxPixelFormat = new QComboBox;
    comboBoxPixelFormat->addItem("Mono 8");
    comboBoxPixelFormat->addItem("RGB 8");
    CameraTree->setItemWidget(itemPixelFormat, 1, comboBoxPixelFormat);
    
    QSpinBox *spinHeight = new QSpinBox();
    spinHeight->setFixedWidth(100);
    QSlider *sliderHeight = new QSlider(Qt::Horizontal);
    QHBoxLayout *hboxlayoutHeight = new QHBoxLayout();
    hboxlayoutHeight->addWidget(spinHeight,8);
    hboxlayoutHeight->addWidget(sliderHeight);
    
    QWidget *widgetHeight = new QWidget();
    widgetHeight->setLayout(hboxlayoutHeight);
    
    QTreeWidgetItem *itemHeight = new QTreeWidgetItem;
    itemHeight->setText(0, "Height");
    item_ImageFormatControl->addChild(itemHeight);
    //CameraTree->setItemWidget(item, 1, spBox);
    CameraTree->setItemWidget(itemHeight, 1, widgetHeight);                //设置ckBox为item的第二列
    QTreeWidgetItem *itemGainAuto = new QTreeWidgetItem;
    itemGainAuto->setText(0,"Gain Auto");
    item_AnalogControl->addChild(itemGainAuto);
    //CameraTree->setItemWidget(item_AnalogControl,);
    
    QTreeWidgetItem *itemBalanceWhiteAuto = new QTreeWidgetItem;
    itemBalanceWhiteAuto->setText(0, "Balance White Auto");
    itemBalanceWhiteAuto->setToolTip(0, "Balance White Auto");
    item_ImageQualityControl->addChild(itemBalanceWhiteAuto);
    
    QTreeWidgetItem *itemGamma= new QTreeWidgetItem;
    itemGamma->setText(0, "Gamma");
    item_ImageQualityControl->addChild(itemGamma);
    
    QSpinBox *spinGamma = new QSpinBox();
    spinGamma->setFixedWidth(100);
    QSlider *sliderGamma = new QSlider(Qt::Horizontal);
    QHBoxLayout *hboxlayoutGamma = new QHBoxLayout();
    hboxlayoutGamma->addWidget(spinGamma, 8);
    hboxlayoutGamma->addWidget(sliderGamma);
    
    QWidget *widgetGamma = new QWidget();
    widgetGamma->setLayout(hboxlayoutGamma);
    CameraTree->setItemWidget(itemGamma, 1, widgetGamma);                //设置ckBox为item的第二列
    
    QWidget *widget = new QWidget();
    widget->setLayout(hLayout);
    dock_CameraSet->setWidget(widget);
    
    QTreeWidgetItem *itemOutputAlignment = new QTreeWidgetItem;
    itemOutputAlignment->setText(0,"Output Alignment");
    second->addChild(itemOutputAlignment);

     实现效果如下图:

     

    QTreeWidget还有一些常见信号可用,可以用于一些软件中的点击QTreeWidget对象中添加的QTreeWidgeItem对象调用槽函数,常见信号如下

    void itemPressed(QTreeWidgetItem *item, int column);
    void itemClicked(QTreeWidgetItem *item, int column);
    void itemDoubleClicked(QTreeWidgetItem *item, int column);
    void itemActivated(QTreeWidgetItem *item, int column);
    
    connect(CameraTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(test(QTreeWidgetItem *, int)));//点击CameraTree中的QTreeWidgetItem对象即可调用槽函数

     

     

    展开全文
  • treewidget添加logo的小demo 欢迎交流!
  • QTreeWidget插入子item

    千次阅读 2020-07-07 19:22:35
    QTreeWidgetItem* newVtxItem = new QTreeWidgetItem(parentItem); newVtxItem->setText(0, "vtx 1"); newVtxItem->setText(1, "-1"); childOfNameProfile->insertChild(0,newVtxItem); 将子元素插入到...

    我想使用 insertChild 函数插入一个子项,但是一直不成功。该项一直被添加在所有项的末尾。

    我的源代码

    QTreeWidgetItem* newVtxItem = new QTreeWidgetItem(parentItem);
    newVtxItem->setText(0, "vtx 1");
    newVtxItem->setText(1, "-1");
    childOfNameProfile->insertChild(0,newVtxItem);
    

    将子元素插入到所有子元素之后的原因是:当创建QTreeWidgetItem并指定父元素时,Qt将它直接放在父元素的子元素列表的末尾。(Qt文档的说明)

    QTreeWidgetItem* newVtxItem = new QTreeWidgetItem(parentItem); //在这里就已经被放到所有子元素的后面
    

    在这里插入图片描述
    所以此时使用 insertChild 函数 也不会被再次插入了。
    在这里插入图片描述

    QTreeWidgetItem* newVtxItem = new QTreeWidgetItem();  //更改此处即可
    newVtxItem->setText(0, "vtx 1");
    newVtxItem->setText(1, "-1");
    childOfNameProfile->insertChild(0,newVtxItem);
    
    

    在项目中遇到的问题:
    百度之后得到答案,原文在这里:原文链接

    https://stackoverflow.com/questions/27844221/qtreewidgetiteminsertchild-does-not-its-work

    展开全文
  • QTreeWidgetItem* item = new QTreeWidgetItem(pTree) ; item->setText ( 0, "test" ); pTree->addTopLevelItem (item ); 原因是因为创建一个item的时候一定要用new的方式才行 转载于:...
  • TreeWidget添加checkbox后的选中事件

    千次阅读 2020-01-13 15:04:58
    首先connect一下到槽函数: ...treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int))); treeItemChanged函数如下: void KqDlgXzpjzbTree::treeItemChanged(...
  • 在Qt+VS2005下,使用slot函数customContextMenuRequested(QPointpos)实现Treewidget的右键菜单栏。 1、在ui编辑界面中,右击QTreeWidget--> Connect Signal-->选择customContextMenuRequested(QPoint),添加...
  • 老猿Python博文目录 ...顶层项的增加有三类方法,一类是在前面介绍的QTreeWidgetItem中的构造方法构造项时,直接将QTreeWidget对象作为参数传递进去;第二类是利用QTreeWidget的隐形根节点(关于隐形根节点,请参...
  • QTreeWidgetItem添加自定义数据

    千次阅读 2020-05-21 18:09:46
    QTreeWidgetItem添加自定义数据 本文简要介绍一个知识点,如题所示,就是如何给QTreeWidgetItem添加自定义数据。两种方法: 方法一 数据可以是任意类型(Variant类型),如果不是基本数据类型的数据,则需要定义一个...
  • 其中的QtreeWidgetItem就是一层层的添加的,其实还是不太方便的。         在应用程序中一般不是这样来创建QTreeView的,特别是比较复杂的Tree,一般都是通过QTreeView来实现而不是QTreeWidget来实现的。 ...
  • QT中treeWidgetItem使用

    2020-02-10 21:36:12
    { ui->setupUi(this);...treeWidget->setHeaderLabels(QStringList()<<"英雄姓名"<<"英雄介绍"); //添加头项 QStringList l,m,f; //相当于C++中 list<string> l l<<"力量"...
  • QTreeWidgetItem使用方法setFlags(flags() & (~Qt::ItemIsEnabled)).
  • 在一个treewidget中,只对于每个treewidgetitem可以鼠标右击弹出一个类似于有“删除”、“打开文件夹”之类的小菜单,该怎么设计信号和槽?
  • QT添加一个TreeWidget控件 目录 1.添加头文件 2.添加.h文件代码 3.添加.cpp代码 4.效果 1.添加头文件 #include <QTreeWidget> #include <QItemDelegate> #include <QStringList> 2.添加....
  • PySide2 Treewidget添加父节点/子节点 人麻了,百度看了一大堆,官方文档也搜了很多,都没找到一个合适的添加方法,最后突然想到可以看看ui文件转换成的py文件里是怎么写的,一看果然成了: 原来直接在父节点上创建...
  • 关键代码如下: QTreeWidgetItem *item = new QTreeWidgetItem; item->setIcon(0,QIcon(QString("icon/logo1.png"))); item->setText(0,QString("top_item1"));...treeWidget->addTopLevel...
  • TreeWidget 与 TreeView 中实现右键菜单稍有不同, TreeView 中是靠信号与槽 connect(ui->treeView,SIGNAL(customContextMenuRequested(constQPoint&)), this,SLOT(onCustomContextMenuRequested(constQPoint&))); ...
  • treewidget添加鼠标右击响应,比如添加树节点,删除树节点,编辑数节点的名字 关键一步: from GUI.Ui_atomTree import * from PyQt5.QtWidgets import * from lib.loadtemplate import * from PyQt5....
  • 第三种是重新实现数据模型,这里主要介绍前面两种 第一种方法实现: void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column) //treewidget的槽函数 { item->setFlags(Qt::...
  • int index = ui->treeWidget->indexOfTopLevelItem(item); ui->treeWidget->takeTopLevelItem(index); delete item; } main.cpp #include "mainwindow.h" #include int main(int argc, char *argv[]) { ...
  • //初始化TreeWidget项目 QTreeWidgetItem *item1=new QTreeWidgetItem; //项目图标 item1->setIcon(0,button_ico_add_friends); //列数 //图标大小 item1->setSizeHint(0,QSize(20,20)); //项目文字 item1->...
  • 例程1: QTreeWidget *parentTree = itor.value().type == 2 ? ui.PriceTreeWidget : ui....auto pItem = new QTreeWidgetItem(parentTree); if(pItem) {  QString name = itor.value().labelName;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 879
精华内容 351
关键字:

treewidget添加item