Explication détaillée du contrôle QT QTreeView\QTreeWidget

         Cet article présente en détail diverses opérations des contrôles QTreeView et QTreeWidget, telles que : nouvelle interface, QTreeWidget, QTreeView, disposition des contrôles, définition de la colonne, définition de la largeur et de la hauteur, définition de l'en-tête de colonne, définition de la case à cocher, définition de l'icône, ajout d'arbre, suppression d'arbre , arbre de recherche, arbre de modification, sélection d'ensemble, tri d'arbre, événement, signal, fonction d'emplacement, ajout de nœud, sélection par défaut, fichier source .h, fichier source cpp, autres articles, etc.

        En développement réel, une interface peut contenir plus d'une douzaine de contrôles, et l'ajustement manuel de leurs positions est long et laborieux. Le gestionnaire de disposition peut faire deux choses : ajuster automatiquement la position des champs, y compris l'espacement entre les champs, l'alignement, etc. ; lorsque l'utilisateur redimensionne la fenêtre, les champs situés dans le gestionnaire de disposition seront également redimensionnés en conséquence, conservant ainsi la toute l'interface magnifique.

        Cette série d'articles complets et détaillés sur QT contient actuellement 28 contenus de haute qualité. Cette série d'articles décrit plus en détail le fonctionnement de base et l'utilisation des contrôles QT. Merci pour votre attention, vos likes et vos collections.

 L'auteur de cet article est original, veuillez joindre la source de l'article et le lien de cet article pour réimpression.

QT QTreeView\QTreeWidget contrôle utiliser le répertoire détaillé

1 Nouvelle interface

2 QTreeWidget

2.1 Disposition des commandes

2.2 Réglage des colonnes

2.3 Définir la largeur et la hauteur

2.4 Définir l'en-tête de la liste

2.5 Cases à cocher

2.6 Ajouter un arbre

2.6.1 Ajouter des éléments de niveau supérieur

2.6.2 Insérer un élément de niveau supérieur

2.6.3 Ajouter un sous-élément

2.7 Supprimer l'arborescence

2.7.1 Supprimer un sous-élément

2.7.2 Suppression des entrées de niveau supérieur

2.8 Arbre de requête

2.8.1 Interroger les éléments correspondants

2.8.2 Interroger le numéro de série correspondant

2.9 Opérations d'entrée dans l'arborescence

2.9.1 Ligne et colonne actuellement sélectionnées

2.9.2 Définir l'élément sélectionné

2.9.3 Définir la ligne sélectionnée

2.9.4 Définir la colonne sélectionnée

2.9.5 La ligne sélectionnée précédente de la ligne actuellement sélectionnée

2.10 Tri des arbres

2.10.1 Configurer le tri automatique

2.10.2 Montée et descente

2.11 Recherche arborescente

2.12 Vider l'arborescence

2.13 Pliage des arbres

2.14 Développer l'arborescence

2.15 Défilement des éléments spécifiés

2.16 Signal de clic d'arbre

2.17 Arbre double clic signal

2.18 Signaux d'expansion d'arbre

2.19 Signaux de pliage d'arbre

2.20 Signal de changement de données de colonne

3 QTreeView

3.1 Disposition des commandes

3.2 Ajouter des nœuds

3.3 Icône Paramètres

3.4 Définir la case à cocher

3.5 Sélectionné par défaut

3.6 Signal de clic

3.7 Signal de double-clic


1 Nouvelle interface

2 QTreeWidget

2.1 Disposition des commandes

    QStringList topTitle;

    QTreeWidgetItem* treeWidgetItem_1;
    QTreeWidgetItem* treeWidgetItem_2;
    QTreeWidgetItem* treeWidgetItem_3;

    QTreeWidgetItem* treeItem_1;
    QTreeWidgetItem* treeItem_2;
    QTreeWidgetItem* treeItem_3;

    QStringList sTreeList_1,sTreeList_2,sTreeList_3;
    QStringList sTreeItemList_1,sTreeItemList_2,sTreeItemList_3;


    //创建项目
    treeWidgetItem_1 = new QTreeWidgetItem(sTreeList_1);
    treeWidgetItem_2 = new QTreeWidgetItem(sTreeList_2);
    treeWidgetItem_3 = new QTreeWidgetItem(sTreeList_3);

    treeItem_1=new QTreeWidgetItem(sTreeItemList_1);
    treeItem_2=new QTreeWidgetItem(sTreeItemList_2);
    treeItem_3=new QTreeWidgetItem(sTreeItemList_3);
    
    sTreeList_1 << "顶级条目0-第1列" << "顶级条目0-第2列" << "顶级条目0-第3列" << "顶级条目0-第4列" << "顶级条目0-第5列";
    sTreeList_2 << "顶级条目1-第1列" << "顶级条目1-第2列" << "顶级条目1-第3列" << "顶级条目1-第4列" << "顶级条目1-第5列";
    sTreeList_3 << "顶级条目2-第1列" << "顶级条目2-第2列" << "顶级条目2-第3列" << "顶级条目2-第4列" << "顶级条目2-第5列";

    sTreeItemList_1 << "子条目0-第1列" << "子条目0-第2列" << "子条目0-第3列" << "子条目0-第4列" << "子条目0-第5列";
    sTreeItemList_3 << "子条目1-第1列" << "子条目1-第2列" << "子条目1-第3列" << "子条目1-第4列" << "子条目1-第5列";
    sTreeItemList_2 << "子条目2-第1列" << "子条目2-第2列" << "子条目2-第3列" << "子条目2-第4列" << "子条目2-第5列";

2.2 Réglage des colonnes

    //设置列数
    ui->treeWidget->setColumnCount(3);

    //获取列
    ui->treeWidget->columnCount();

2.3 Définir la largeur et la hauteur

    //设置宽高
    //ui->treeWidget->resize(600,300);

2.4 Définir l'en-tête de la liste

topTitle << "0" << "1" << "2" << "3" << "4";
ui->treeWidget->setHeaderLabels(topTitle);

2.5 Cases à cocher

    //设置复选框     参数1 复选框的位置 列序号    Qt::Unchecked   没选中 Qt::Checked    选中   Qt::PartiallyChecked   部分选中
    treeWidgetItem_2->setCheckState(0,Qt::PartiallyChecked);

2.6 Ajouter un arbre

2.6.1 Ajouter des éléments de niveau supérieur

    //添加一个顶层项目
    ui->treeWidget->addTopLevelItem(treeWidgetItem_1);
    ui->treeWidget->addTopLevelItem(treeWidgetItem_2);

2.6.2 Insérer un élément de niveau supérieur

    //插入顶层项目
    ui->treeWidget->insertTopLevelItem(0,treeWidgetItem_3);

2.6.3 Ajouter un sous-élément

    //给项目添加子项
    treeWidgetItem_1->addChild(treeItem_1);
    treeWidgetItem_1->addChild(treeItem_2);
    treeWidgetItem_1->addChild(treeItem_3);

2.6.4 Autres fonctions ajoutées

        Par exemple, pour obtenir le nombre total d'éléments de niveau supérieur

qDebug() << "顶层总数:" << ui->treeWidget->topLevelItemCount();

    //    树形控件顶级条目的操作比较类似 QListWidget 的列表条目操作函数。新建条目之后,可以用如下函数把条目添加到树形控件的顶级条目列表末尾:
    //    void QTreeWidget::​addTopLevelItem(QTreeWidgetItem * item) //添加一个顶级条目到末尾
    //    void QTreeWidget::​addTopLevelItems(const QList<QTreeWidgetItem *> & items) //添加多个顶级条目到末尾
    //    如果希望将条目插入到指定顶级条目列表的 index 序号位置,使用如下函数:
    //    void QTreeWidget::​insertTopLevelItem(int index, QTreeWidgetItem * item)
    //    void QTreeWidget::​insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
    //    树形控件所有的顶级条目父节点指针都为 NULL (父节点是指树形层次中的节点关系,而条目的父控件依然是树形控件本身)。
    //    添加了顶级条目之后,可以对顶级条目进行计数:
    //    int QTreeWidget::​topLevelItemCount() const

2.7 Supprimer l'arborescence

2.7.1 Supprimer un sous-élément

    //删除子项目
    //treeWidgetItem_1->takeChild(2);

2.7.2 Suppression des entrées de niveau supérieur

    //删除顶级条目
    //ui->treeWidget->takeTopLevelItem(2);

2.8 Arbre de requête

2.8.1 Interroger les éléments correspondants

    //查询控件对应条目
    qDebug() << ui->treeWidget->topLevelItem(1);

2.8.2 Interroger le numéro de série correspondant

    //查询控件顶级序号
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_1);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_2);
    qDebug() << ui->treeWidget->indexOfTopLevelItem(treeWidgetItem_3);

2.9 Opérations d'entrée dans l'arborescence

2.9.1 Ligne et colonne actuellement sélectionnées

    qDebug() << "当前选中行: " << ui->treeWidget->currentItem();
    qDebug() << "当前选中列: " << ui->treeWidget->currentColumn();

2.9.2 Définir l'élément sélectionné

//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item)
//    void QTreeWidget::​setCurrentItem(QTreeWidgetItem * item, int column)

2.9.3 Définir la ligne sélectionnée

    //设置选中行
    //ui->treeWidget->setCurrentItem(treeWidgetItem_1);

2.9.4 Définir la colonne sélectionnée

    //设置选中某行某列
    ui->treeWidget->setCurrentItem(treeWidgetItem_1,2);

2.9.5 La ligne sélectionnée précédente de la ligne actuellement sélectionnée

    //当前选中行 上一个选中行
    //ui->treeWidget->currentItemChanged(treeWidgetItem_1, treeWidgetItem_2);

2.10 Tri des arbres

2.10.1 Configurer le tri automatique

    //ui->treeWidget->isSortingEnabled();
    //ui->treeWidget->setSortingEnabled(true);

2.10.2 Montée et descente

    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::AscendingOrder);       //升序
    //ui->treeWidget->sortByColumn(1, Qt::SortOrder::DescendingOrder);      //降序

2.11 Recherche arborescente

    QString text = "顶级条目2-第2列";
    Qt::MatchFlags flags;
    //ui->treeWidget->findItems(text, flags, 0);
    bool isEmpty = ui->treeWidget->findItems(text,Qt::MatchExactly).isEmpty();
    qDebug() << "查找: " << isEmpty;

2.12 Vider l'arborescence

//清空控件
void MainWindow::on_pushButton_2_clicked()
{
    ui->treeWidget->clear();
}

2.13 Pliage des arbres

//折叠控件
void MainWindow::on_pushButton_3_clicked()
{
    ui->treeWidget->collapseItem(treeWidgetItem_1);
}

2.14 Développer l'arborescence

//展开控件
void MainWindow::on_pushButton_4_clicked()
{
    ui->treeWidget->expandItem(treeWidgetItem_1);
}

2.15 Défilement des éléments spécifiés

//滚动到指定条目
void MainWindow::on_pushButton_5_clicked()
{
    //void scrollToItem(const QTreeWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible)
}

2.16 Signal de clic d'arbre

void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "单击信号: " << item << "column: " << column;
}

2.17 Arbre double clic signal

void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
    qDebug() << "双击信号: " << item << "column: " << column;
}

2.18 Signaux d'expansion d'arbre

void MainWindow::on_treeWidget_itemExpanded(QTreeWidgetItem *item)
{
    qDebug() << "展开控件:" << item;
}

2.19 Signaux de pliage d'arbre

void MainWindow::on_treeWidget_itemCollapsed(QTreeWidgetItem *item)
{
    qDebug() << "折叠信号: " << item;
}

2.20 Signal de changement de données de colonne

void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
    qDebug() << "列数据变化: " << item;
}

3 QTreeView

3.1 Disposition des commandes

    QStandardItemModel *standardModel;
    QStandardItem *standardItem;

    //设置表头
    standardModel = new QStandardItemModel(this);
    //设置表头隐藏
    //ui->treeView->setHeaderHidden(true);
    //设置表头
    standardModel->setHorizontalHeaderLabels(QStringList()<<"0"<<"1"<<"2");
    //设置model
    ui->treeView->setModel(standardModel);
    //设置展开
    ui->treeView->expandAll();

3.2 Ajouter des nœuds

    //添加节点
    standardItem = new QStandardItem("顶级条目-0");

        standardModel->setItem(0,0,standardItem);
        QStandardItem *item00 = new QStandardItem("子条目0");
        QStandardItem *item10 = new QStandardItem("子条目1");
        QStandardItem *item20 = new QStandardItem("子条目2");

        QStandardItem *item01 = new QStandardItem("0-0");
        QStandardItem *item11 = new QStandardItem("0-1");
        QStandardItem *item21 = new QStandardItem("0-2");

        QStandardItem *item02 = new QStandardItem("0-0-0");
        QStandardItem *item12 = new QStandardItem("0-1-1");
        QStandardItem *item22 = new QStandardItem("0-2-2");

        standardModel->item(0,0)->setChild(0,0,item00);
        standardModel->item(0,0)->setChild(1,0,item10);
        standardModel->item(0,0)->setChild(2,0,item20);
        standardModel->item(0,0)->setChild(0,1,item01);
        standardModel->item(0,0)->setChild(1,1,item11);
        standardModel->item(0,0)->setChild(2,1,item21);
        standardModel->item(0,0)->setChild(0,2,item02);
        standardModel->item(0,0)->setChild(1,2,item12);
        standardModel->item(0,0)->setChild(2,2,item22);


        QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");
        standardModel->setItem(1,0,item2);

        QStandardItem *item200 = new QStandardItem("子条目0");
        QStandardItem *item210 = new QStandardItem("子条目1");
        QStandardItem *item220 = new QStandardItem("子条目2");

        QStandardItem *item201 = new QStandardItem("1-0");
        QStandardItem *item211 = new QStandardItem("1-1");
        QStandardItem *item221 = new QStandardItem("1-2");

        QStandardItem *item202 = new QStandardItem("1-0-0");
        QStandardItem *item212 = new QStandardItem("1-1-1");
        QStandardItem *item222 = new QStandardItem("1-2-2");

        standardModel->item(1,0)->setChild(0,0,item200);
        standardModel->item(1,0)->setChild(1,0,item210);
        standardModel->item(1,0)->setChild(2,0,item220);
        standardModel->item(1,0)->setChild(0,1,item201);
        standardModel->item(1,0)->setChild(1,1,item211);
        standardModel->item(1,0)->setChild(2,1,item221);
        standardModel->item(1,0)->setChild(0,2,item202);
        standardModel->item(1,0)->setChild(1,2,item212);
        standardModel->item(1,0)->setChild(2,2,item222);

3.3 Icône Paramètres

QStandardItem *item2 = new QStandardItem(QIcon("D:/c.png"),"顶级条目-1");

3.4 Définir la case à cocher

        //设置节点带checkBox
        standardModel->item(0,0)->setCheckable(true);
        standardModel->item(0,0)->setCheckState(Qt::Checked);

3.5 Sélectionné par défaut

        //设置默认选中第几行
        QModelIndex index = standardModel->item(1,0)->index();
        ui->treeView->setCurrentIndex(index);

3.6 Signal de clic

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    qDebug() << "单击信号 index: " << index;
}

3.7 Signal de double-clic

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index)
{
    qDebug() << "双击信号 index: " << index;
}

4 autres articles

QT TextEdit Control_Gemini Breakpoint Blog-CSDN Blog_qt textedit

Explication détaillée de l'utilisation de QT QComboBox - Gemini Breakpoint Blog - CSDN Blog

Explication détaillée du fonctionnement de QT QtableView

Qt QStandardItemModel (1. Utilisation super détaillée)_ Gemini Breakpoint Blog-CSDN Blog_qstandardmodel

Qt QStandardItemModel (2. Fonction super détaillée)_Gemini breakpoint blog-CSDN blog_qstandarditemmodel click event

Utilisation détaillée de QT QRadioButton - Gemini Breakpoint Blog - CSDN Blog - qt radiobutton

Utilisation détaillée de QT QLineEdit_ Gemini Breakpoint Blog-CSDN Blog_qt qlineedit

Explication détaillée de l'utilisation de Qt QMessageBox - Gemini Breakpoint Blog - CSDN Blog - qt message

QChart Line Chart, Pie Chart, Bar Chart, Curve Chart_ Gemini Breakpoint Blog-CSDN Blog_qchart Style

Explication détaillée des propriétés QChart_ Gemini Breakpoint Blog-CSDN Blog_setanimationoptions

Utilisation de QCharts QValueAxis_Gemini Breakpoint Blog-CSDN Blog_qvalueaxis

Qt 5 wait prompt box (open source dynamic graph)_ Gemini Breakpoint Blog-CSDN Blog_qt wait dialog box

QtDataVisualization Data 3D Visualization_Gemini Breakpoint Blog-CSDN Blog_qtdatavisualizatio

QT QSpinBox Integer Counter Control Utiliser une explication détaillée_Gemini Breakpoint Blog-CSDN BlogQT
QDoubleSpinBox Floating Point Counter Control (Detailed Use)_Gemini Breakpoint Blog-CSDN Blog_qdoublespinbox Signal Slot
QT QSlider, QHorizontalSlider, QVerticalSlider Control Utiliser une explication détaillée_Gemini Breakpoint blog-CSDN blog_qslider set step size

Explication détaillée de l'utilisation du contrôle QT QTabWidget - Gemini Breakpoint Blog - CSDN Blog

Explication détaillée de l'utilisation du contrôle QT QCalendarWidget - Gemini Breakpoint Blog - CSDN Blog

Utilisation détaillée du contrôle QT QStackedWidget - Gemini Breakpoint Blog - CSDN Blog

Contrôle de mise en page verticale QT QVBoxLayout - Gemini Breakpoint Blog - CSDN Blog

QT QHBoxLayout Mise en page horizontale Control_Gemini Breakpoint Blog-CSDN BlogQT
QGridLayout Grid Layout Control_Gemini Breakpoint Blog-CSDN Blog

QT QVerticalSpacer Spring Control_Gemini Breakpoint Blog-CSDN BlogQT
QHorizontalSpacer Spring Control_Gemini Breakpoint Blog-CSDN Blog

Je suppose que tu aimes

Origine blog.csdn.net/qq_37529913/article/details/131261347
conseillé
Classement