Qt之QTreeWidget入門


QTreeWidget的一些基本操作

1.insertTopLevelItems,insertTopLevelItem用來添加頂層的item

QTreeWidget *treeWidget = new QTreeWidget(this);//創建
treeWidget->setColumnCount(1);  //設置列
treeWidget->setHeaderLabel(tr("item tree"));    //設置標題
treeWidget->setGeometry(0,0,this->width(),this->height());  //設置大小
QList<QTreeWidgetItem *> items;

//創建兩個節點
QTreeWidgetItem *fItem1 = new QTreeWidgetItem(treeWidget,QStringList(QString("f1")));
QTreeWidgetItem *fItem2 = new QTreeWidgetItem(treeWidget,QStringList(QString("f2")));

items.append(fItem1);
items.append(fItem2);
//添加頂層節點
treeWidget->insertTopLevelItems(0,items);
//節點始終保持展開
treeWidget->setItemsExpandable(false);
treeWidget->expandAll();

 

2.父節點通過addChild增加子節點

//創建子節點
QTreeWidgetItem *fItem1a = new QTreeWidgetItem(fItem1,QStringList(QString("f1a")));
QTreeWidgetItem *fItem1b = new QTreeWidgetItem(fItem1,QStringList(QString("f1b")));

QTreeWidgetItem *fItem2a = new QTreeWidgetItem(fItem2,QStringList(QString("f2a")));
QTreeWidgetItem *fItem2b = new QTreeWidgetItem(fItem2,QStringList(QString("f2b")));

    //添加字節點
fItem1->addChild(fItem1a);
fItem1->addChild(fItem1b);

fItem2->addChild(fItem2a);
fItem2->addChild(fItem2b);

 

3.建立鼠標點擊右鍵點擊信號檢測

//檢測點擊事件
    connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(itemClick(QTreeWidgetItem*,int)));
    //檢測鼠標右鍵
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(popMenu(const QPoint&)));

4.槽函數

void Widget::itemClick(QTreeWidgetItem *item, int column)
{
    QTreeWidgetItem *parent = item->parent();   //獲取父節點
    if(NULL==parent) //注意:最頂端項是沒有父節點的
        return;
    int col = parent->indexOfChild(item); //item在父項中的節點行號(從0開始)
}

//彈出菜單
void Widget::popMenu(const QPoint &)
{
    QTreeWidgetItem* curItem=treeWidget->currentItem();  //**獲取當前被點擊的節點
    if(curItem == NULL || curItem->parent() == NULL)
        return;           //右鍵的位置在空白位置右擊或者點擊的是頂層item

    //創建一個action
    QAction deleteItem(QString::fromLocal8Bit("&刪除"),this);
    connect(&deleteItem, SIGNAL(triggered()), this, SLOT(deleteItem()));
    QPoint pos;
    //創建一個菜單欄
    QMenu menu(treeWidget);
    menu.addAction(&deleteItem);
    menu.exec(QCursor::pos());  //在當前鼠標位置顯示
}

//刪除item
void Widget::deleteItem()
{
    QTreeWidgetItem* curItem=treeWidget->currentItem();
    curItem->parent()->removeChild(treeWidget->currentItem());
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM