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é
2.3 Définir la largeur et la hauteur
2.4 Définir l'en-tête de la liste
2.6.1 Ajouter des éléments de niveau supérieur
2.6.2 Insérer un élément de niveau supérieur
2.7.1 Supprimer un sous-élément
2.7.2 Suppression des entrées de niveau supérieur
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.1 Configurer le tri automatique
2.14 Développer l'arborescence
2.15 Défilement des éléments spécifiés
2.18 Signaux d'expansion d'arbre
2.19 Signaux de pliage d'arbre
2.20 Signal de changement de données de colonne
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