6#include "../include/mainwindow.h"
8MainWindow::MainWindow()
10 QMenu *fileMenu =
new QMenu(tr(
"&File"));
12 QAction *quitAction = fileMenu->addAction(tr(
"E&xit"));
13 quitAction->setShortcut(tr(
"Ctrl+Q"));
15 QMenu *itemsMenu =
new QMenu(tr(
"&Items"));
17 insertAction = itemsMenu->addAction(tr(
"&Insert Item"));
18 removeAction = itemsMenu->addAction(tr(
"&Remove Item"));
19 removeAction->setEnabled(
false);
20 itemsMenu->addSeparator();
21 ascendingAction = itemsMenu->addAction(tr(
"Sort in &Ascending Order"));
22 descendingAction = itemsMenu->addAction(tr(
"Sort in &Descending Order"));
23 autoSortAction = itemsMenu->addAction(tr(
"&Automatically Sort Items"));
24 autoSortAction->setCheckable(
true);
25 itemsMenu->addSeparator();
26 findItemsAction = itemsMenu->addAction(tr(
"&Find Items"));
27 findItemsAction->setShortcut(tr(
"Ctrl+F"));
29 menuBar()->addMenu(fileMenu);
30 menuBar()->addMenu(itemsMenu);
33
34
36 treeWidget =
new QTreeWidget(
this);
37 treeWidget->setColumnCount(2);
39 headers << tr(
"Subject") << tr(
"Default");
40 treeWidget->setHeaderLabels(headers);
42 connect(quitAction, &QAction::triggered,
this, &QWidget::close);
43 connect(ascendingAction, &QAction::triggered,
this, &MainWindow::sortAscending);
44 connect(autoSortAction, &QAction::triggered,
this, &MainWindow::updateSortItems);
45 connect(descendingAction, &QAction::triggered,
this, &MainWindow::sortDescending);
46 connect(findItemsAction, &QAction::triggered,
this, &MainWindow::findItems);
47 connect(insertAction, &QAction::triggered,
this, &MainWindow::insertItem);
48 connect(removeAction, &QAction::triggered,
this, &MainWindow::removeItem);
49 connect(treeWidget, &QTreeWidget::currentItemChanged,
50 this, &MainWindow::updateMenus);
53 updateMenus(treeWidget->currentItem());
55 setCentralWidget(treeWidget);
56 setWindowTitle(tr(
"Tree Widget"));
61 QTreeWidgetItem *planets =
new QTreeWidgetItem(treeWidget);
62 planets->setText(0, tr(
"Planets"));
63 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Mercury"));
64 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Venus"));
66 QTreeWidgetItem *earthItem =
new QTreeWidgetItem(planets);
67 earthItem->setText(0, tr(
"Earth"));
68 earthItem->setText(1, tr(
"Yes"));
70 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Mars"));
71 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Jupiter"));
72 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Saturn"));
73 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Uranus"));
74 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Neptune"));
75 (
new QTreeWidgetItem(planets))->setText(0, tr(
"Pluto"));
80 QString itemText = QInputDialog::getText(
this, tr(
"Find Items"),
83 if (itemText.isEmpty())
87 QTreeWidgetItemIterator it(treeWidget);
89 if ((*it)->text(0) == itemText)
90 (*it)->setSelected(
true);
98 QTreeWidgetItem *currentItem = treeWidget->currentItem();
103 QString itemText = QInputDialog::getText(
this, tr(
"Insert Item"),
104 tr(
"Input text for the new item:"));
106 if (itemText.isEmpty())
109 QTreeWidgetItem *parent = currentItem->parent();
110 QTreeWidgetItem *newItem;
112 newItem =
new QTreeWidgetItem(parent, treeWidget->currentItem());
114 newItem =
new QTreeWidgetItem(treeWidget, treeWidget->currentItem());
116 newItem->setText(0, itemText);
121 QTreeWidgetItem *currentItem = treeWidget->currentItem();
126 QTreeWidgetItem *parent = currentItem->parent();
130 index = parent->indexOfChild(treeWidget->currentItem());
131 delete parent->takeChild(index);
133 index = treeWidget->indexOfTopLevelItem(treeWidget->currentItem());
134 delete treeWidget->takeTopLevelItem(index);
140 treeWidget->sortItems(0, Qt::AscendingOrder);
145 treeWidget->sortItems(0, Qt::DescendingOrder);
150 insertAction->setEnabled(current != 0);
151 removeAction->setEnabled(current != 0);
156 ascendingAction->setEnabled(!autoSortAction->isChecked());
157 descendingAction->setEnabled(!autoSortAction->isChecked());
159 treeWidget->setSortingEnabled(autoSortAction->isChecked());
void updateMenus(QTreeWidgetItem *current)