Russian Qt Forum
Ноябрь 23, 2024, 03:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QtableWidget чтение элементов таблицы в двумерный массив  (Прочитано 6352 раз)
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« : Ноябрь 09, 2020, 21:54 »

Что-то в конце не так:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QStandardItemModel"
#include "QStandardItem"
#include <QTableWidget>
#include <QMessageBox>
#include<QString>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->tableWidget->setColumnCount(4);
    ui->tableWidget->setRowCount(2);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString array[4][2];
    int a=0;
    for(int i=0; i<2; i++)
        for(int j=0; j<4; j++)
        {
         QTableWidgetItem* item = ui->tableWidget->item(i,j);
         if(ui->tableWidget->item(i,j)==0)
         {
             ui->tableWidget->setItem(i,j, new QTableWidgetItem("The Cell is Empty"));
             a=a+1;
         }
    }

if(a!=0)  QMessageBox::information(this,"New Info","Your table is not full");
else
{
    for(int i=0; i<2; i++)
        for(int j=0; j<4; j++)
        {
            QTableWidgetItem* item = ui->tableWidget->item(i,j);
            array[j]=item(i,j);
        }


}
}
Записан
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #1 : Ноябрь 09, 2020, 22:14 »

Последняя строка скорее всего неправльная.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Ноябрь 10, 2020, 11:17 »

объяви array как [2][4], тогда будет правильно. а еще научись пользоваться тегом code.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Ноябрь 10, 2020, 12:26 »

объяви array как [2][4], тогда будет правильно.
Тогда компиляция пройдет, но правильным/хорошим оно не станет  Улыбающийся
Да, обучение - двусторонний процесс  Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Ноябрь 10, 2020, 13:43 »

объяви array как [2][4], тогда будет правильно.
Тогда компиляция пройдет, но правильным/хорошим оно не станет  Улыбающийся
Да, обучение - двусторонний процесс  Улыбающийся
так компиляция и сейчас пройдет, просто будет скорее всего падать в рантайме.
тут явно задача уровня «сдать лабу» Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #5 : Ноябрь 10, 2020, 17:43 »

объяви array как [2][4], тогда будет правильно. а еще научись пользоваться тегом code.
Объявление правда пропущено. Но это не поможет.
Напрямую приравнивать как просто в С++ не поможет.
В этом суть моего вопроса. как это равенство корректно записать.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Ноябрь 10, 2020, 18:06 »

Код:
QString array[2][4]
array[i][j] = item(i, j);
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Ноябрь 10, 2020, 18:23 »

объяви array как [2][4], тогда будет правильно. а еще научись пользоваться тегом code.
Объявление правда пропущено. Но это не поможет.
Напрямую приравнивать как просто в С++ не поможет.
В этом суть моего вопроса. как это равенство корректно записать.
оно не пропущено, а объявлено некорректно (цифры наоборот).

какое «равенство» (вероятно, присвоение)? мы ж не знаем что ты пытаешься засунуть в массив. текст ячейки? так надо наверное посмотреть на методы QTableWidgetItem, чтобы понять как его получить? Улыбающийся
Код:
array[i][j] = item->text();

2Авварон: если внимательно присмотреться к коду, можно заметить, что индекс i съеден рендером как курсив Подмигивающий
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #8 : Ноябрь 10, 2020, 18:25 »

Кажись получилось:
void MainWindow::on_pushButton_clicked()
{
    QString matr[3][2], a; int i,j;
    for (i=0; i<2; i++)
        for(j=0; j<3; j++)
        {
    QTableWidgetItem* item = ui->tableWidget->item(i,j);
    //item->setSelected(true);
    //QTableWidgetItem *itm=ui->tableWidget->currentItem();
   //QMessageBox::information(this,"info",itm->text());
    //a=itm->text();
    matr[j]=item->text();
    QMessageBox::information(this,"info",matr[j]);

        }
}
Записан
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #9 : Ноябрь 10, 2020, 18:26 »

 matr[j]=item->text();

моль завелась
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Ноябрь 10, 2020, 20:40 »

а еще научись пользоваться тегом code.
и моли не будет
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #11 : Ноябрь 10, 2020, 23:07 »

И как научиться. Где про это написано ?
Записан
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #12 : Ноябрь 10, 2020, 23:15 »

Код:
QString array[2][4]
array[i][j] = item(i, j);
Не работает эта рекомендация, потому что она теоретическая как большинство в интернете, а работает то, чтьо я привел.
Записан
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #13 : Ноябрь 12, 2020, 17:30 »

break не срабатывает.
Записан
Аларий
Новичок

Offline Offline

Сообщений: 15


Просмотр профиля
« Ответ #14 : Ноябрь 12, 2020, 17:31 »

и goto не помогает
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.