Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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 "mainwindow.h"
8
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
25 tableWidget = new QTableWidget(12, 3, this);
28
30 QTableWidgetItem *valuesHeaderItem = new QTableWidgetItem(tr("Values"));
31 tableWidget->setHorizontalHeaderItem(0, valuesHeaderItem);
33 valuesHeaderItem->setTextAlignment(Qt::AlignVCenter);
34 QTableWidgetItem *squaresHeaderItem = new QTableWidgetItem(tr("Squares"));
35 squaresHeaderItem->setIcon(QIcon(QPixmap(":/Images/squared.png")));
36 squaresHeaderItem->setTextAlignment(Qt::AlignVCenter);
38 QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
39 cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
40 cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
42 tableWidget->setHorizontalHeaderItem(1, squaresHeaderItem);
43 tableWidget->setHorizontalHeaderItem(2, cubesHeaderItem);
44
45 connect(quitAction, &QAction::triggered, this, &QWidget::close);
46 connect(sumItemsAction, &QAction::triggered, this, &MainWindow::sumItems);
47 connect(averageItemsAction, &QAction::triggered, this, &MainWindow::averageItems);
48
49 setupTableItems();
50
51 setCentralWidget(tableWidget);
52 setWindowTitle(tr("Table Widget"));
53}
54
55void MainWindow::setupTableItems()
56{
57 for (int row = 0; row < tableWidget->rowCount()-1; ++row) {
58 for (int column = 0; column < tableWidget->columnCount(); ++column) {
60 QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
61 pow(row, column+1)));
62 tableWidget->setItem(row, column, newItem);
64 }
65 }
66 for (int column = 0; column < tableWidget->columnCount(); ++column) {
69 tableWidget->setItem(tableWidget->rowCount()-1, column, newItem);
70 }
71}
72
74{
75 const QList<QTableWidgetItem *> selected = tableWidget->selectedItems();
76 int number = 0;
77 double total = 0;
78
79 for (QTableWidgetItem *item : selected) {
80 bool ok;
81 double value = item->text().toDouble(&ok);
82
83 if (ok && !item->text().isEmpty()) {
84 total += value;
85 number++;
86 }
87 }
88 if (number > 0)
89 tableWidget->currentItem()->setText(QString::number(total/number));
90}
91
93{
95 const QList<QTableWidgetItem *> selected = tableWidget->selectedItems();
96 int number = 0;
97 double total = 0;
98
99 for (QTableWidgetItem *item : selected) {
100 bool ok;
101 double value = item->text().toDouble(&ok);
102
103 if (ok && !item->text().isEmpty()) {
104 total += value;
105 number++;
106 }
107 }
109 if (number > 0)
110 tableWidget->currentItem()->setText(QString::number(total));
111}
void averageItems()
void sumItems()
void setSelectionMode(QAbstractItemView::SelectionMode mode)
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
void triggered(bool checked=false)
This signal is emitted when an action is activated by the user; for example, when the user clicks a m...
The QIcon class provides scalable icons in different modes and states.
Definition qicon.h:20
void setCentralWidget(QWidget *widget)
Sets the given widget to be the main window's central widget.
QAction * addMenu(QMenu *menu)
Appends menu to the menu bar.
Definition qmenubar.cpp:768
The QMenu class provides a menu widget for use in menu bars, context menus, and other popup menus.
Definition qmenu.h:26
void addAction(QAction *action)
Appends the action action to this widget's list of actions.
Definition qwidget.cpp:3117
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:8084
The QTableWidgetItem class provides an item for use with the QTableWidget class.
void setText(const QString &text)
Sets the item's text to the text specified.
void setFlags(Qt::ItemFlags flags)
Sets the flags for the item to the given flags.
The QTableWidget class provides an item-based table view with a default model.
void setItem(int row, int column, QTableWidgetItem *item)
Sets the item for the given row and column to item.
QTableWidgetItem * currentItem() const
Returns the current item.
int rowCount
the number of rows in the table
QList< QTableWidgetItem * > selectedItems() const
Returns a list of all selected items.
void setHorizontalHeaderItem(int column, QTableWidgetItem *item)
Sets the horizontal header item for column column to item.
int columnCount
the number of columns in the table
bool close()
Closes this widget.
Definition qwidget.cpp:8562
friend class QPixmap
Definition qwidget.h:748
void setWindowTitle(const QString &)
Definition qwidget.cpp:6105
@ AlignVCenter
Definition qnamespace.h:155
@ ItemIsEnabled
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLenum GLsizei void GLsizei void * column
GLenum GLenum GLsizei void * row
SSL_CTX int void * arg
#define tr(X)
QGraphicsItem * item
QMenuBar * menuBar
[0]