Autor podstrony: Krzysztof Zajączkowski

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

Kontrolka QColumnView umożliwia utworzenie listy wyboru, gdzie kliknięcie jednej opcji powoduje pojawienie się odpowiadającej jej kolejnym opcjom. Widok takiej kontrolki pokazany został na poniższym rysunku.

Qt Creator - przykładowy widok działania kontrolki QColumnView
Rys. 1
Qt Creator - przykładowy widok działania kontrolki QColumnView

Kod w pliku mainwindow.h:

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT QStandardItemModel *columnTableModel; // model dla kontrolki QColumnWidget void resizeEvent(QResizeEvent *) override; public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

Kod programu w pliku mainwindow.cpp:

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // tworzę obiekt klasy QStandardItemModel columnTableModel = new QStandardItemModel(ui->columnView); // podpinam go pod kontrolkę typu QColumnView ui->columnView->setModel(columnTableModel); // dane do stworzenia elementów widoku QMap<QString, QList<QString>> continents = { { "Europa", {"Polska", "Francja", "Hiszpania"} }, { "Australia", {"Australia"} }, { "Azja", {"Rosja", "Indie", "Chiny"} } }; // tworzę iterator QMapIterator<QString, QList<QString>> continent(continents); while(continent.hasNext()) { continent.next(); // tworzę grupę kontynentu QStandardItem *group = new QStandardItem(continent.key()); // dodaję państawa do danej grupy kontynantu foreach (QString country, continent.value()) { QStandardItem *child = new QStandardItem(country); // dodaję do głównej grupy group->appendRow(child); } // dodaję do głównego modelu columnTableModel->appendRow(group); } // ustawiam szerokości poszczególnych kolumn ui->columnView->setColumnWidths( {150, 150} ); } MainWindow::~MainWindow() { delete ui; } void MainWindow::resizeEvent(QResizeEvent *event){ QWidget::resizeEvent(event); QRect size = ui->centralWidget->geometry(); ui->columnView->setGeometry(0, 0, size.width(), size.height()); }
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-4.8/qcolumnview.html - opis klasy QColumnView dostępny na stronie 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.