欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt開發(fā)之QTreeWidget的使用教程詳解

 更新時間:2022年12月01日 09:36:28   作者:音視頻開發(fā)老舅  
這篇文章主要為大家詳細介紹了Qt中QTreeWidget使用的相關資料,文中的示例代碼講解詳細,對我們學習Qt有一定的幫助,感興趣的小伙伴可以了解一下

一.常用API設置

1.添加頂層節(jié)點

    //添加頂層節(jié)點
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);
    topItem1->setText(0,"百度");
    ui->treeWidget->addTopLevelItem(topItem1);

2.設置表頭隱藏,展開所有項

    //隱藏表頭
    ui->treeWidget->setHeaderHidden(true);
    //設置展開
    ui->treeWidget->expandAll();

3.頂層節(jié)點添加子節(jié)點

    QTreeWidgetItem *item11 = new QTreeWidgetItem(topItem1);
    item11->setText(0,"研發(fā)部");
    QTreeWidgetItem *item12 = new QTreeWidgetItem(topItem1);
    item12->setText(0,"銷售部");
    QTreeWidgetItem *item13 = new QTreeWidgetItem(topItem1);
    item13->setText(0,"人事部");

4.節(jié)點可以帶一些數(shù)據,使用setData()這個接口

    //設置數(shù)據,可以帶多種數(shù)據
    item11->setData(0,Qt::UserRole,100/*人員數(shù)量*/);
    item11->setData(0,Qt::UserRole+1,"李彥宏"/*負責人名字*/);
 
    //獲得數(shù)據
    item11->data(0,Qt::UserRole).toInt();
    item11->data(0,Qt::UserRole+1).toString();

5.節(jié)點可以設置自定義類型,設置圖標、flags、文本

//自定義枚舉
enum NodeType
{
    ROOT = 0,
    SON 
};
 
QTreeWidgetItem *item = new QTreeWidgetItem(ROOT);
//item->setIcon();
//item->setText();
//item->setFlags();

二.設置帶checkBox

    QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget);
    topItem2->setText(0,"騰訊");
    topItem2->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(topItem2);
 
    QTreeWidgetItem *item21 = new QTreeWidgetItem(topItem2);
    item21->setText(0,"研發(fā)部");
    item21->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item22 = new QTreeWidgetItem(topItem2);
    item22->setText(0,"銷售部");
    item22->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item23 = new QTreeWidgetItem(topItem2);
    item23->setText(0,"人事部");
    item23->setCheckState(0,Qt::Checked);

簡單的響應一下點擊信號,當頂層節(jié)點選中,下面的所有子節(jié)點全選中

    connect(ui->treeWidget,&QTreeWidget::itemClicked,this,
            &Form::slotClicked);
 
    void Form::slotClicked(QTreeWidgetItem *item, int column)
    {
        //簡單響應一下選中狀態(tài)槽函數(shù)
        for (int i=0; i<item->childCount(); i++)
        {
           QTreeWidgetItem *pChildItem = item->child(i);
           pChildItem->setCheckState(0,item->checkState(0));
        }
    }

三.右鍵菜單

    //打開右鍵菜單屬性
    ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
 
    //右鍵菜單
    m_menu = new QMenu(ui->treeWidget);
    m_menu->addAction("添加");
    m_menu->addAction("刪除");
 
    //響應右鍵菜單信號槽
    connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,
            this,&Form::slotMenuPopup);
    
    void Form::slotMenuPopup(const QPoint &pos)
    {
        m_menu->exec(ui->treeWidget->mapToGlobal(pos));
    }

四.設置qss

這里簡單設置一下背景色,展開/合并時的圖標,item的一些設置,僅供參考。

const QString styles = "QTreeView\
{\
    background-color: #5B677A;\
    font-size:17px;\
    color: white;\
}\
QTreeView::item:hover\
{\
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);\
    border: 1px solid #bfcde4;\
}\
QTreeView::item:hover\
{\
    background: rgb(69, 187, 217);\
}\
QTreeView::item:selected:active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::item:selected:!active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::branch\
{\
    background:#5B677A;\
}\
QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Folder-1.png);\
}\
QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Open-Folder.png);\
}";

調用ui->treeWidget->setStyleSheet(styles);就行了

五.運行效果

六.多列樹

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
 
const QString sstyle = "\
QHeaderView::section\
{\
    background-color: white;\
}";
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    QStringList strList;
    strList<<"名稱"<<"年齡"<<"性別";
    ui->treeWidget->setHeaderLabels(strList);
    ui->treeWidget->header()->setStyleSheet(sstyle);
 
    QTreeWidgetItem *item1 = new QTreeWidgetItem(QStringList()<<"七年級");
    ui->treeWidget->addTopLevelItem(item1);
 
    QTreeWidgetItem *item11 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男");
    item1->addChild(item11);
    QTreeWidgetItem *item12 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女");
    item1->addChild(item12);
    QTreeWidgetItem *item13 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女");
    item1->addChild(item13);
 
    QTreeWidgetItem *item2 = new QTreeWidgetItem(QStringList()<<"八年級");
    ui->treeWidget->addTopLevelItem(item2);
 
    QTreeWidgetItem *item21 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男");
    item2->addChild(item21);
    QTreeWidgetItem *item22 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女");
    item2->addChild(item22);
    QTreeWidgetItem *item23 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女");
    item2->addChild(item23);
 
    QTreeWidgetItem *item3 = new QTreeWidgetItem(QStringList()<<"九年級");
    ui->treeWidget->addTopLevelItem(item3);
 
    QTreeWidgetItem *item31 = new QTreeWidgetItem(QStringList()<<"小漲"<<"13"<<"男");
    item3->addChild(item31);
    QTreeWidgetItem *item32 = new QTreeWidgetItem(QStringList()<<"小紅"<<"14"<<"女");
    item3->addChild(item32);
    QTreeWidgetItem *item33 = new QTreeWidgetItem(QStringList()<<"小麗"<<"13"<<"女");
    item3->addChild(item33);
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    qDebug()<<item->text(0);
    qDebug()<<item->text(1);
    qDebug()<<item->text(2);
}

到此這篇關于Qt開發(fā)之QTreeWidget的使用教程詳解的文章就介紹到這了,更多相關Qt QTreeWidget內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言算法打卡回文串驗證算法題解

    C語言算法打卡回文串驗證算法題解

    這篇文章主要為大家介紹了C語言算法打卡萬人千提的leetcode回文串的驗證算法題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • C++類常量和類枚舉

    C++類常量和類枚舉

    這篇文章主要介紹了C++類常量和類枚舉,給類當中定義一些常量,可以給所有類的對象使用,比如說我們在類當中定義一個數(shù)組,希望可以定義一個常量,用來初始化數(shù)組的長度,那么下面我i嗎就來看看過程當如何吧
    2022-01-01
  • C語言實現(xiàn)線索二叉樹的定義與遍歷示例

    C語言實現(xiàn)線索二叉樹的定義與遍歷示例

    這篇文章主要介紹了C語言實現(xiàn)線索二叉樹的定義與遍歷,結合具體實例形式分析了基于C語言的線索二叉樹定義及遍歷操作相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-06-06
  • C語言經典順序表真題演練講解

    C語言經典順序表真題演練講解

    程序中經常需要將一組數(shù)據元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-04-04
  • C語言中嵌入Lua解釋器的方法詳解

    C語言中嵌入Lua解釋器的方法詳解

    Lua語言是一個輕量的腳本語言,可以用很少的資源運行其解釋器,這篇文章主要為大家介紹了如何在C語言中嵌入Lua解釋器的方法,希望對大家有所幫助
    2024-05-05
  • C++遞歸線性陣列搜索數(shù)字的方法

    C++遞歸線性陣列搜索數(shù)字的方法

    這篇文章主要介紹了C++遞歸線性陣列搜索數(shù)字的方法,涉及C++遞歸及數(shù)組操作的相關技巧,需要的朋友可以參考下
    2015-06-06
  • C++實現(xiàn)LeetCode(98.驗證二叉搜索樹)

    C++實現(xiàn)LeetCode(98.驗證二叉搜索樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(98.驗證二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • QT+ffmpeg實現(xiàn)視頻解析的示例詳解

    QT+ffmpeg實現(xiàn)視頻解析的示例詳解

    這篇文章主要為大家詳細介紹了如何利用QT+ffmpeg實現(xiàn)視頻解析功能,文中的示例代碼講解詳細,對我們學習Qt有一定幫助,需要的可以參考一下
    2022-09-09
  • C語言lseek()函數(shù)詳解

    C語言lseek()函數(shù)詳解

    這篇文章主要介紹了C語言lseek()函數(shù)詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C++遍歷某個文件夾下面的子文件夾及其所有文件

    C++遍歷某個文件夾下面的子文件夾及其所有文件

    這篇文章主要介紹了C++獲取某個文件夾下面的子文件夾及其所有文件,需要的朋友可以參考下
    2021-07-07

最新評論