Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
mainwindow.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4#include <QtWidgets>
5#include <math.h>
6
7#include "../include/mainwindow.h"
8
9MainWindow::MainWindow()
10{
11 QMenu *fileMenu = new QMenu(tr("&File"));
12
13 QAction *quitAction = fileMenu->addAction(tr("E&xit"));
14 quitAction->setShortcut(tr("Ctrl+Q"));
15
16 QMenu *itemsMenu = new QMenu(tr("&Items"));
17
18 QAction *sumItemsAction = itemsMenu->addAction(tr("&Sum Items"));
19 QAction *averageItemsAction = itemsMenu->addAction(tr("&Average Items"));
20
21 menuBar()->addMenu(fileMenu);
22 menuBar()->addMenu(itemsMenu);
23
24 //! [0]
25 tableWidget = new QTableWidget(12, 3, this);
26 //! [0]
27 tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
28
29 //! [1]
30 QTableWidgetItem *valuesHeaderItem = new QTableWidgetItem(tr("Values"));
31 tableWidget->setHorizontalHeaderItem(0, valuesHeaderItem);
32 //! [1]
33
34 valuesHeaderItem->setTextAlignment(Qt::AlignVCenter);
35 QTableWidgetItem *squaresHeaderItem = new QTableWidgetItem(tr("Squares"));
36 squaresHeaderItem->setIcon(QIcon(QPixmap(":/Images/squared.png")));
37 squaresHeaderItem->setTextAlignment(Qt::AlignVCenter);
38
39 //! [2]
40 QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
41 cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
42 cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
43 //! [2]
44
45 tableWidget->setHorizontalHeaderItem(1, squaresHeaderItem);
46 tableWidget->setHorizontalHeaderItem(2, cubesHeaderItem);
47
48 connect(quitAction, &QAction::triggered, this, &QWidget::close);
49 connect(sumItemsAction, &QAction::triggered, this, &MainWindow::sumItems);
50 connect(averageItemsAction, &QAction::triggered, this, &MainWindow::averageItems);
51
52 setupTableItems();
53
54 setCentralWidget(tableWidget);
55 setWindowTitle(tr("Table Widget"));
56}
57
59{
60 for (int row = 0; row < tableWidget->rowCount()-1; ++row) {
61 for (int column = 0; column < tableWidget->columnCount(); ++column) {
62 //! [3]
63 QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
64 pow(row, column+1)));
65 tableWidget->setItem(row, column, newItem);
66 //! [3]
67 }
68 }
69 for (int column = 0; column < tableWidget->columnCount(); ++column) {
70 QTableWidgetItem *newItem = new QTableWidgetItem;
71 newItem->setFlags(Qt::ItemIsEnabled);
72 tableWidget->setItem(tableWidget->rowCount()-1, column, newItem);
73 }
74}
75
77{
78 const QList<QTableWidgetItem *> selected = tableWidget->selectedItems();
79 int number = 0;
80 double total = 0;
81
82 for (QTableWidgetItem *item : selected) {
83 bool ok;
84 double value = item->text().toDouble(&ok);
85
86 if (ok && !item->text().isEmpty()) {
87 total += value;
88 number++;
89 }
90 }
91 if (number > 0)
92 tableWidget->currentItem()->setText(QString::number(total/number));
93}
94
96{
97 //! [4]
98 const QList<QTableWidgetItem *> selected = tableWidget->selectedItems();
99 int number = 0;
100 double total = 0;
101
102 for (QTableWidgetItem *item : selected) {
103 bool ok;
104 double value = item->text().toDouble(&ok);
105
106 if (ok && !item->text().isEmpty()) {
107 total += value;
108 number++;
109 }
110 }
111 //! [4]
112 if (number > 0)
113 tableWidget->currentItem()->setText(QString::number(total));
114}
void setupTableItems()
void averageItems()
void sumItems()