From 97b5b8009254004608feefb903cbf44abaa099f6 Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Mon, 7 May 2012 18:49:48 +0200 Subject: Doc: Modularize QtWidgets documentation. This change moves the snippets and images to the modularized directories. Change-Id: Idec1afb9db7ea6add1ca4cf25ec4019d8bce0c4d Reviewed-by: Marius Storm-Olsen --- .../doc/snippets/qtreewidget-using/mainwindow.cpp | 230 +++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 src/widgets/doc/snippets/qtreewidget-using/mainwindow.cpp (limited to 'src/widgets/doc/snippets/qtreewidget-using/mainwindow.cpp') diff --git a/src/widgets/doc/snippets/qtreewidget-using/mainwindow.cpp b/src/widgets/doc/snippets/qtreewidget-using/mainwindow.cpp new file mode 100644 index 0000000000..2a62c3e5f8 --- /dev/null +++ b/src/widgets/doc/snippets/qtreewidget-using/mainwindow.cpp @@ -0,0 +1,230 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "mainwindow.h" + +MainWindow::MainWindow() +{ + QMenu *fileMenu = new QMenu(tr("&File")); + + QAction *quitAction = fileMenu->addAction(tr("E&xit")); + quitAction->setShortcut(tr("Ctrl+Q")); + + QMenu *itemsMenu = new QMenu(tr("&Items")); + + insertAction = itemsMenu->addAction(tr("&Insert Item")); + removeAction = itemsMenu->addAction(tr("&Remove Item")); + removeAction->setEnabled(false); + itemsMenu->addSeparator(); + ascendingAction = itemsMenu->addAction(tr("Sort in &Ascending Order")); + descendingAction = itemsMenu->addAction(tr("Sort in &Descending Order")); + autoSortAction = itemsMenu->addAction(tr("&Automatically Sort Items")); + autoSortAction->setCheckable(true); + itemsMenu->addSeparator(); + QAction *findItemsAction = itemsMenu->addAction(tr("&Find Items")); + findItemsAction->setShortcut(tr("Ctrl+F")); + + menuBar()->addMenu(fileMenu); + menuBar()->addMenu(itemsMenu); + +/* For convenient quoting: +//! [0] + QTreeWidget *treeWidget = new QTreeWidget(this); +//! [0] +*/ + treeWidget = new QTreeWidget(this); +//! [1] + treeWidget->setColumnCount(2); +//! [1] //! [2] + QStringList headers; + headers << tr("Subject") << tr("Default"); + treeWidget->setHeaderLabels(headers); +//! [2] + + connect(quitAction, SIGNAL(triggered()), this, SLOT(close())); + connect(ascendingAction, SIGNAL(triggered()), this, SLOT(sortAscending())); + connect(autoSortAction, SIGNAL(triggered()), this, SLOT(updateSortItems())); + connect(descendingAction, SIGNAL(triggered()), this, SLOT(sortDescending())); + connect(findItemsAction, SIGNAL(triggered()), this, SLOT(findItems())); + connect(insertAction, SIGNAL(triggered()), this, SLOT(insertItem())); + connect(removeAction, SIGNAL(triggered()), this, SLOT(removeItem())); + connect(treeWidget, + SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), + this, SLOT(updateMenus(QTreeWidgetItem *))); + + setupTreeItems(); + updateMenus(treeWidget->currentItem()); + + setCentralWidget(treeWidget); + setWindowTitle(tr("Tree Widget")); +} + +void MainWindow::setupTreeItems() +{ +//! [3] + QTreeWidgetItem *cities = new QTreeWidgetItem(treeWidget); + cities->setText(0, tr("Cities")); + QTreeWidgetItem *osloItem = new QTreeWidgetItem(cities); + osloItem->setText(0, tr("Oslo")); + osloItem->setText(1, tr("Yes")); +//! [3] + + (new QTreeWidgetItem(cities))->setText(0, tr("Stockholm")); + (new QTreeWidgetItem(cities))->setText(0, tr("Helsinki")); + (new QTreeWidgetItem(cities))->setText(0, tr("Copenhagen")); + +//! [4] //! [5] + QTreeWidgetItem *planets = new QTreeWidgetItem(treeWidget, cities); +//! [4] + planets->setText(0, tr("Planets")); +//! [5] + (new QTreeWidgetItem(planets))->setText(0, tr("Mercury")); + (new QTreeWidgetItem(planets))->setText(0, tr("Venus")); + + QTreeWidgetItem *earthItem = new QTreeWidgetItem(planets); + earthItem->setText(0, tr("Earth")); + earthItem->setText(1, tr("Yes")); + + (new QTreeWidgetItem(planets))->setText(0, tr("Mars")); + (new QTreeWidgetItem(planets))->setText(0, tr("Jupiter")); + (new QTreeWidgetItem(planets))->setText(0, tr("Saturn")); + (new QTreeWidgetItem(planets))->setText(0, tr("Uranus")); + (new QTreeWidgetItem(planets))->setText(0, tr("Neptune")); + (new QTreeWidgetItem(planets))->setText(0, tr("Pluto")); +} + +void MainWindow::findItems() +{ + QString itemText = QInputDialog::getText(this, tr("Find Items"), + tr("Text to find (including wildcards):")); + + if (itemText.isEmpty()) + return; + +//! [6] + QTreeWidgetItem *item; +//! [6] + foreach (item, treeWidget->selectedItems()) + treeWidget->setItemSelected(item, false); + +//! [7] + QList found = treeWidget->findItems( + itemText, Qt::MatchWildcard); + + foreach (item, found) { + treeWidget->setItemSelected(item, true); + // Show the item->text(0) for each item. + } +//! [7] +} + +void MainWindow::insertItem() +{ + QTreeWidgetItem *currentItem = treeWidget->currentItem(); + + if (!currentItem) + return; + + QString itemText = QInputDialog::getText(this, tr("Insert Item"), + tr("Input text for the new item:")); + + if (itemText.isEmpty()) + return; + +//! [8] + QTreeWidgetItem *parent = currentItem->parent(); + QTreeWidgetItem *newItem; + if (parent) + newItem = new QTreeWidgetItem(parent, treeWidget->currentItem()); + else +//! [8] //! [9] + newItem = new QTreeWidgetItem(treeWidget, treeWidget->currentItem()); +//! [9] + + newItem->setText(0, itemText); +} + +void MainWindow::removeItem() +{ + QTreeWidgetItem *currentItem = treeWidget->currentItem(); + + if (!currentItem) + return; + +//! [10] + QTreeWidgetItem *parent = currentItem->parent(); + int index; + + if (parent) { + index = parent->indexOfChild(treeWidget->currentItem()); + delete parent->takeChild(index); + } else { + index = treeWidget->indexOfTopLevelItem(treeWidget->currentItem()); + delete treeWidget->takeTopLevelItem(index); +//! [10] //! [11] + } +//! [11] +} + +void MainWindow::sortAscending() +{ + treeWidget->sortItems(0, Qt::AscendingOrder); +} + +void MainWindow::sortDescending() +{ + treeWidget->sortItems(0, Qt::DescendingOrder); +} + +void MainWindow::updateMenus(QTreeWidgetItem *current) +{ + insertAction->setEnabled(current != 0); + removeAction->setEnabled(current != 0); +} + +void MainWindow::updateSortItems() +{ + ascendingAction->setEnabled(!autoSortAction->isChecked()); + descendingAction->setEnabled(!autoSortAction->isChecked()); + + treeWidget->setSortingEnabled(autoSortAction->isChecked()); +} -- cgit v1.2.3