Explicación detallada del control QT QTreeView\QTreeWidget

         Este artículo presenta varias operaciones de los controles QTreeView y QTreeWidget en detalle, tales como: nueva interfaz, QTreeWidget, QTreeView, diseño de control, configuración de columna, configuración de ancho y alto, configuración de encabezado de columna, configuración de casilla de verificación, configuración de icono, adición de árbol, eliminación de árbol , buscar árbol, modificar árbol, establecer selección, clasificación de árbol, evento, señal, función de ranura, agregar nodo, selección predeterminada, archivo fuente .h, archivo fuente cpp, otros artículos, etc.

        En el desarrollo real, una interfaz puede contener más de una docena de controles, y ajustar manualmente sus posiciones requiere mucho tiempo y es laborioso. El administrador de diseño puede hacer dos cosas: ajustar automáticamente la posición de los controles, incluido el espacio entre los controles, la alineación, etc.; cuando el usuario cambia el tamaño de la ventana, los controles ubicados en el administrador de diseño también se redimensionarán en consecuencia, manteniendo así el toda la interfaz hermosa.

        Esta serie de artículos completos y detallados de QT actualmente tiene contenido de alta calidad de 28. Esta serie de artículos describe el funcionamiento básico y el uso de los controles de QT con más detalle. Gracias por su atención, Me gusta y colecciones.

 El autor de este artículo es original, adjunte la fuente del artículo y el enlace de este artículo para su reimpresión.

QT QTreeView\QTreeWidget control usar directorio detallado

1 Nueva interfaz

2 QTree Widget

2.1 Diseño de controles

2.2 Configuración de columnas

2.3 Establecer ancho y alto

2.4 Establecer el encabezado de la lista

2.5 Configuración de casillas de verificación

2.6 Añadir un árbol

2.6.1 Agregar elementos de nivel superior

2.6.2 Insertar elemento de nivel superior

2.6.3 Agregar subelemento

2.7 Eliminar árbol

2.7.1 Eliminar un subelemento

2.7.2 Eliminación de entradas de nivel superior

2.8 Árbol de consulta

2.8.1 Consultar elementos correspondientes

2.8.2 Consultar el número de serie correspondiente

2.9 Operaciones de Entrada de Árbol

2.9.1 Fila y columna actualmente seleccionadas

2.9.2 Establecer elemento seleccionado

2.9.3 Establecer la línea seleccionada

2.9.4 Establecer la columna seleccionada

2.9.5 La fila anterior seleccionada de la fila actualmente seleccionada

2.10 Clasificación de árboles

2.10.1 Configurar clasificación automática

2.10.2 Ascendente y descendente

2.11 Búsqueda de árbol

2.12 Vaciar el árbol

2.13 Árboles plegables

2.14 Expandiendo el árbol

2.15 Desplazamiento de elementos específicos

2.16 Señal de clic de árbol

2.17 Señal de doble clic de árbol

2.18 Señales de expansión del árbol

2.19 Señales de plegado de árboles

2.20 Señal de cambio de datos de columna

3QTreeView

3.1 Diseño de controles

3.2 Agregar nodos

3.3 Icono de configuración

3.4 Establecer casilla de verificación

3.5 Seleccionado por defecto

3.6 Señal de clic

3.7 Señal de doble clic


1 Nueva interfaz

2 QTree Widget

2.1 Diseño de controles

    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 Configuración de columnas

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

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

2.3 Establecer ancho y alto

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

2.4 Establecer el encabezado de la lista

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

2.5 Configuración de casillas de verificación

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

2.6 Añadir un árbol

2.6.1 Agregar elementos de nivel superior

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

2.6.2 Insertar elemento de nivel superior

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

2.6.3 Agregar subelemento

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

2.6.4 Otras funciones añadidas

        Por ejemplo, para obtener el número total de elementos de nivel superior

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 Eliminar árbol

2.7.1 Eliminar un subelemento

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

2.7.2 Eliminación de entradas de nivel superior

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

2.8 Árbol de consulta

2.8.1 Consultar elementos correspondientes

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

2.8.2 Consultar el número de serie correspondiente

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

2.9 Operaciones de Entrada de Árbol

2.9.1 Fila y columna actualmente seleccionadas

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

2.9.2 Establecer elemento seleccionado

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

2.9.3 Establecer la línea seleccionada

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

2.9.4 Establecer la columna seleccionada

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

2.9.5 La fila anterior seleccionada de la fila actualmente seleccionada

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

2.10 Clasificación de árboles

2.10.1 Configurar clasificación automática

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

2.10.2 Ascendente y descendente

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

2.11 Búsqueda de árbol

    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 Vaciar el árbol

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

2.13 Árboles plegables

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

2.14 Expandiendo el árbol

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

2.15 Desplazamiento de elementos específicos

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

2.16 Señal de clic de árbol

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

2.17 Señal de doble clic de árbol

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

2.18 Señales de expansión del árbol

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

2.19 Señales de plegado de árboles

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

2.20 Señal de cambio de datos de columna

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

3QTreeView

3.1 Diseño de controles

    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 Agregar nodos

    //添加节点
    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 Icono de configuración

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

3.4 Establecer casilla de verificación

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

3.5 Seleccionado por defecto

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

3.6 Señal de clic

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

3.7 Señal de doble clic

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

4 otros artículos

QT TextEdit Control_Gemini Breakpoint Blog-CSDN Blog_qt textedit

Explicación detallada del uso de QT QComboBox - Gemini Breakpoint Blog - CSDN Blog

Explicación detallada de la operación QT QtableView

Qt QStandardItemModel (1. Uso muy detallado)_ Gemini Breakpoint Blog-CSDN Blog_qstandardmodel

Qt QStandardItemModel (2. Función súper detallada)_Gemini breakpoint blog-CSDN blog_qstandarditemmodel click event

Uso detallado de QT QRadioButton - Gemini Breakpoint Blog - CSDN Blog - qt radiobutton

Uso detallado de QT QLineEdit_ Gemini Breakpoint Blog-CSDN Blog_qt qlineedit

Explicación detallada del uso de Qt QMessageBox - Gemini Breakpoint Blog - CSDN Blog - qt message

QChart Gráfico de líneas, gráfico circular, gráfico de barras, gráfico de curvas_ Gemini Breakpoint Blog-CSDN Blog_qchart Style

Explicación detallada de las propiedades de QChart_ Gemini Breakpoint Blog-CSDN Blog_setanimationoptions

Uso de QCharts QValueAxis_Gemini Breakpoint Blog-CSDN Blog_qvalueaxis

Cuadro de diálogo de espera de Qt 5 (gráfico dinámico de código abierto)_ Gemini Breakpoint Blog-CSDN Blog_qt cuadro de diálogo de espera

QtDataVisualization Visualización 3D de datos_Gemini Breakpoint Blog-CSDN Blog_qtdatavisualizatio

QT QSpinBox Control de contador de enteros Usar explicación detallada_Gemini Breakpoint Blog-CSDN BlogQT
QDoubleSpinBox Control de contador de punto flotante (uso detallado)_Gemini Breakpoint Blog-CSDN Blog_qdoublespinbox Ranura de señal
QT QSlider, QHorizontalSlider, QVerticalSlider Control Usar explicación detallada_Gemini Breakpoint blog-CSDN blog_qslider establecer tamaño de paso

Explicación detallada del uso del control QT QTabWidget - Gemini Breakpoint Blog - CSDN Blog

Explicación detallada del uso del control QT QCalendarWidget - Gemini Breakpoint Blog - CSDN Blog

Uso detallado del control QT QStackedWidget - Gemini Breakpoint Blog - CSDN Blog

Control de diseño vertical QT QVBoxLayout - Gemini Breakpoint Blog - CSDN Blog

QT QHBoxLayout Diseño horizontal 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

Supongo que te gusta

Origin blog.csdn.net/qq_37529913/article/details/131261347
Recomendado
Clasificación