Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175

Как получить сумму всех элементов в таблице QT

03.03.2023, 14:45. Показов 3318. Ответов 29
Метки c++, qt (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, выручайте! Короче, проблемка такая: прога на QT
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void MainWindow::resetModel()
{
    auto sum = new QStandardItem;
    if(!table)return;
    if(QStandardItemModel *model = dynamic_cast <QStandardItemModel*> (table->model()))
    {
        //заполнить случайными int до 100
        for(int r = 0; r < model->rowCount(); r++)
            for(int c = 0; c < model->columnCount(); c++)
            {
                auto item = new QStandardItem(QString::number(rand()%100));
                item->setTextAlignment(Qt::AlignCenter);
                model->setItem(r,c, item);
 
            }
}
Есть код: это метод, чтобы сгенерировать значения для таблицы 7х7. И вот мне нужно посчитать сумму всех этих чисел.

Помню где-то была реализация для int'ов, но мне впадлу переделывать весь код из-за этого ((

Моя задумка такова: в этом методе генерируются значения и сразу же они могли и сохраниться в какую-нить переменную "sum", чтобы потом просто можно было её вывести в отдельный label.
Могу весь код скинуть, может кому яснее станет, че именно я надумал)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2023, 14:45
Ответы с готовыми решениями:

Как получить сумму всех элементов?
Как получить сумму всех элементов temph ? float temph = (float)rang2 / SummRang2; NormСriterion = temph; label8.Text +=...

Получить новую матрицу путем деления всех элементов исходной матрицы на сумму элементов главной диагонали
Дана матрица A(n,n). Получить новую матрицу путем деления всех элементов исходной матрици на сумму элементов, находящейся на главной...

Получить сумму всех элементов матрицы
Здравствуйте. Помогите пожалуйста с примером: program matrica; uses crt; const ni=1; nj=10; var T:array of integer; ...

29
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
03.03.2023, 18:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nepravilon Посмотреть сообщение
Как вам удаётся вообще разобраться в таких вещах, как прога на qt?
мм.. затрудняюсь ответить
Цитата Сообщение от Nepravilon Посмотреть сообщение
А, всё, я разобрался
примерно так же
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
04.03.2023, 21:44
А чё там разбираться? Элементарные же вещи, если самому их не усложнять всякими auto, model и прочим.

В креаторе перетаскиваю на форму таблицу и требуемое количество кнопок, меток и т.п. В свойствах таблицы устанавливаю размер 7х7, размеры ячеек и снимаю галочки, что-бы у таблицы не было заголовков. У кнопок меняю имя на pbtn_01, 02 и т.д. - так короче (хотя можно дать кнопкам осмысленные имена). Меняю текст на кнопках и в метке. Должно получиться как на рисунке. Продолжение следует.
Миниатюры
Как получить сумму всех элементов в таблице QT  
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
04.03.2023, 21:50  [ТС]
Цитата Сообщение от sdf45 Посмотреть сообщение
мм.. затрудняюсь ответить

примерно так же
хах, забавно))

Добавлено через 27 секунд
Цитата Сообщение от alexu_007 Посмотреть сообщение
А чё там разбираться? Элементарные же вещи, если самому их не усложнять всякими auto, model и прочим.

В креаторе перетаскиваю на форму таблицу и требуемое количество кнопок, меток и т.п. В свойствах таблицы устанавливаю размер 7х7, размеры ячеек и снимаю галочки, что-бы у таблицы не было заголовков. У кнопок меняю имя на pbtn_01, 02 и т.д. - так короче (хотя можно дать кнопкам осмысленные имена). Меняю текст на кнопках и в метке. Должно получиться как на рисунке. Продолжение следует.
Нас попросил препод кодом сделать все кнопки и тейблы
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
05.03.2023, 15:50
Ааа. Это я не умею. Это пусть другие участники форума подсказывают. Хотя, на выполнение программы это оказывать влияние не должно - только геморой с ручным объявлением размеров, положения на форме и тд.

И эта, я бы сделал сперва как проще (формошлёпством), а потом, когда программа заработает - заменил объекты на созданные вручную, по одному.
0
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
05.03.2023, 20:06  [ТС]
Это пусть другие участники форума подсказывают.
Ну, уже подсказали)
только геморой с ручным объявлением размеров, положения на форме и тд.
да понятное дело. Мы-то только учимся, а от нас требуют такое))
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
05.03.2023, 21:18
Цитата Сообщение от Nepravilon Посмотреть сообщение
Мы-то только учимся, а от нас требуют такое
и правильно.
Кликните здесь для просмотра всего текста

- Научившись делать компоновку, коннекты руками, имхо, можно, не особо напрягаясь, клепать в дизайнере (хотя и там есть моменты, которые сходу не вдуплишь). А наоборот, опять же имхо, не сразу получится. (Вот почему, наверное, часто попадаются темы на форуме, где люди используют старый синтаксис коннекта.)
В дальнейшем уже можно выбирать то, что удобнее или требует работодатель. (Но знать надо оба подхода)
- Так же точно, работая в Qt (или другом фреймворке), надо иметь минимальные знания с++ (питона, js, ...), иначе хоть Qt значительно облегчает разработку (по сравнению, например, с WinApi-для меня писать там что либо-это как подтираться крупнозернистой наждачкой), без базовых знаний ЯП будут постоянные затыки в простых и неочень местах.
1
2 / 2 / 0
Регистрация: 12.06.2022
Сообщений: 175
05.03.2023, 21:25  [ТС]
и правильно.
Ну, так-то да)
0
693 / 465 / 162
Регистрация: 01.10.2015
Сообщений: 1,274
05.03.2023, 22:41
Цитата Сообщение от sdf45 Посмотреть сообщение
Вот почему, наверное, часто попадаются темы на форуме, где люди используют старый синтаксис коннекта
Он не "старый", а строчно-ориентированный, и появился хронологически первым. В документации Qt есть статья Differences between String-Based and Functor-Based Connections. Дело вовсе не в том, что какой-либо синтаксис лучше или хуже. Это разные инструменты, для разных целей, и со своими особенностями. Таблица в первом абзаце вышеупомянутого топика документации максимально наглядна.
Если вам нужно работать с QML, есть необходимость соединять сигнал со слотом, имеющим больше параметров, чем передается сигналом, вы осознанно применяете неявное приведение типов - строчно-ориентированный синтаксис "ваше все". И вам, как точно не новичку, не следовало бы впадать в крайности "хуже/лучше")))
2
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
05.03.2023, 23:34
Цитата Сообщение от 0x90h Посмотреть сообщение
Если вам нужно работать с QML, есть необходимость соединять сигнал со слотом, имеющим больше параметров, чем передается сигналом, вы осознанно применяете неявное приведение типов - строчно-ориентированный синтаксис "ваше все".
Угу, я с этим сталкивался, именно в связке с++ - QML.

Цитата Сообщение от 0x90h Посмотреть сообщение
не следовало бы впадать в крайности "хуже/лучше"
Я не делил на "хуже/лучше", просто предположил, что люди, работая с дизайнером(он же вроде генерит коннекты в первом варианте, поправьте если ошибаюсь), не знают про второй вариант коннекта.
Меня иногда удивляет использование первого варианта коннекта в тех местах, где можно обойтись вторым. Это чисто мое субьективное мнение (ведь при использовании первого варианта, если допущена ошибка-все соберется с выдачей ошибки в консоль, а в случае со вторым вариантом сразу же, до компиляции, ошибка будет видна. Кроме того, второй вариант выглядит лаконичнее, имхо. Да и с лямбдами мне больше нравится.)
Но Вы правы конечно, нет "хуже/лучше", все зависит от вкуса или необходимости (как и использовать дизайнер или все писать руками)

Не по теме:


Цитата Сообщение от 0x90h Посмотреть сообщение
вам, как точно не новичку
Вы знаете, чем больше я вникаю в Qt (и с++), тем больше убеждаюсь, что наверное, я "вечный новичек" :)
Вон тему о 4х страницах про синглтоны в "с++ для новичков" читал, это жесть :)

0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
06.03.2023, 10:35
Цитата Сообщение от Nepravilon Посмотреть сообщение
Да вот проблемка в том, что это ж надо как-то вывести? А как согласовать действие кнопки с её выводом в отведённое место? Я просто никак не пойму вообще
У чела отсутствуют основные понятия, как работает программа на Qt. а вы предлагаете ему потренироваться в ручной расстановке кнопок по форме.

В общем, после того, как все объекты (кнопки, метки, поля ввода, таблицы) на форме расстановлены, нужно соединить (сконнектить) сигнал нажатия кнопки со слотом - обработчиком нажатия кнопки. Как я уже писал ранее, кнопку я переименовал в pbtn_01. Тогда соединение сигнала со слотом будет выглядеть вот так: в хедере пишешь
C++ (Qt)
1
2
public slots:
    void press_pbtn_01();
в конструкторе формы:
C++ (Qt)
1
QObject::connect(ui->pbtn_01,SIGNAL(clicked()),this,SLOT(press_pbtn_01()));
в файле cpp:
C++ (Qt)
1
2
3
4
void Widget::press_pbtn_01()
{
    ui->label->setText("123");
}
при нажатии на кнопку в метке должен появиться текст 123

Добавлено через 1 час 8 минут
Теперь перейдём к работе с таблицей QWidget размером 7х7, надеюсь она уже установлена на форму? Сперва заполним таблицу итемами, сделать это лучше в конструкторе формы:

C++ (Qt)
1
2
3
4
5
6
7
8
    // инициализация таблицы
    for(int row = 0; row < 7; row++)
        for(int col = 0; col < 7; col++)
        {
            QTableWidgetItem *item = new QTableWidgetItem;
            item->setTextAlignment(Qt::AlignCenter);
            ui->tableWidget->setItem(row, col, item);
        }
Теперь можно заполнить таблицу случайными числами 0 - 100. Для этого в хедере пишешь:
C++ (Qt)
1
#include <QRandomGenerator>
а в слоте кнопки RND (press_pbtn_01) напишешь следующий код:

C++ (Qt)
1
2
3
4
5
6
7
8
    // заполнение случайными числами
    for(int row = 0; row < 7; row++)
        for(int col = 0; col < 7; col++)
        {
            int x = QRandomGenerator::global()->bounded(100);
            QString str = QString::number(x);
            ui->tableWidget->item(row, col)->setText(str);
        }
Добавлено через 13 минут
Вычисление суммы: добавляешь слот второй кнопки аналогично первой и пишешь в нём код:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
    int summa = 0;
    QString str;
 
    // вычисление суммы
    for(int row = 0; row < 7; row++)
        for(int col = 0; col < 7; col++)
        {
            str = ui->tableWidget->item(row, col)->text();
            summa += str.toInt();
         }
 
    ui->label->setText(QString::number(summa));
Если нужно, выложу файлы .h и .cpp целиком.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2023, 10:35

Получить сумму всех четных элементов массива
Вот задача: Дан линейный массив а из n элементов. Получить сумму всех четных элементов. Помогите решить. И мне нужно более простой код....

Получить сумму всех положительных элементов массива
Задание заключается в том, чтобы получить сумму всех положительных элементов массива. У меня получилось, но почему-то программа вместе с...

Создать функцию, принимающую список целых чисел и возвращающую, сумму всех элементов, сумму всех четных элементов, а так
сделать на python

Дан двумерный массив. Определить: а) сумму всех элементов третьей строки массива; б) сумму всех элементов s-го столбца
Дан двумерный массив. Определить: а) сумму всех элементов третьей строки массива; б) сумму всех элементов s-го столбца массива.

Получить удвоенную сумму всех положительных элементов массива
Дан массив действительных чисел размерности n. Получить удвоенную сумму всех положительных элементов массива и удвоенное произведение всех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru