Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2480 razy

Kontrolka QTreeWidget umożliwia tworzenie drzewiastej listy, gdzie każdy element może zawierać elementy potomne. Typowym przykładem zastosowania takiej kontrolki jest np. wyświetlanie rozwijanej struktury listy folderów w przeglądarkach.

Qt Creator - przykład użycia kontrolki QTeeWidget
Rys. 1
Qt Creator - przykład użycia kontrolki QTreeWidget

Kod w pliku mainwindow.h:

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDebug> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: // slot podpięty pod sygnał podwójnego kliknięcia elementu w kontrolce treeWidget void on_treeWidget_doubleClicked(const QModelIndex &index); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

Kod w pliku mainwindow.cpp:

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->treeWidget->setColumnCount(2); // ustawiam liczbę kolumn (domyślnie jedna) QTreeWidgetItem *itemEurope = new QTreeWidgetItem(ui->treeWidget); // tworzę główny korzeń drzewa itemEurope->setText(0, "Europa"); // ustawiam tekst pierwszej kolumny QIcon iconFolder(":/images/open.png"); // tworzę ikonkę folderu QIcon iconZSRE(":/images/ue.png"); // tworzę ikonkę ZSRE itemEurope->setIcon(0, iconFolder); // ustawiam ikonkę dla głównego korzenia QTreeWidgetItem *itemZSRE = new QTreeWidgetItem(itemEurope); // tworzę gałąź głównego korzenia itemZSRE->setText(0, "ZSRE"); // ustawiam tekst pierwszej kolumny itemZSRE->setText(1, "Związek Socjalistycznych Republik Europejskich"); // ustawiam tekst drugiej kolumny itemZSRE->setIcon(0, iconZSRE); // ustawiam ikonkę itemEurope->addChild(itemZSRE); // dodaję element do korzenia // lista krajów: QStringList ZSRE = { "Austria", "Belgia", "Bułgaria", "Chorwacja", "Cypr", "Czechy", "Dania", "Estonia", "Finlandia", "Francja", "Grecja", "Hiszpania", "Holandia", "Irlandia", "Litwa", "Luksemburg", "Łotwa", "Malta", "Niemcy", "Polska", "Portugalia", "Rumunia", "Słowacja", "Słowenia", "Szwecja", "Węgry", "Wielka Brytania", "Włochy" }; foreach(QString country, ZSRE){ QTreeWidgetItem *countryChild = new QTreeWidgetItem(itemZSRE); // tworzę element kraju countryChild->setText(0, country); // dodaję tekst itemZSRE->addChild(countryChild); // dodaję element potomny do itemZSRE } ui->treeWidget->addTopLevelItem(itemEurope); // dodaję korzeń z elementami potomnymi do kontrolki QTreeWidget ui->treeWidget->setHeaderLabels({"Nazwa", "Opis"}); // ustawiam opis kolumn ui->treeWidget->setColumnWidth(0, 150); // ustawiam rozmiar pierwszej kolumny } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_treeWidget_doubleClicked(const QModelIndex &index) { qDebug() << index.data().toString(); // wypisuję w konsoli Qt Creatora informację o klikniętym elemencie }
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5.9/qtreewidget.html - opis klasy QTreeWidget na stronie dokumentacji Qt
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.