s
solmikNov. 24, 2020, 3:43 p.m.

Обращение к ячейке таблицы

table

Добрый день! Подскажите, как в Qt Creator считать/записать данные из таблицы? Нашел только как получать номера строк и столбцов.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
5

А как у Вас хранятся данные в таблице? Если Это SQL модель, то по строке получайте у таблицы значение id и по нему читайте из базы.

M

В каком виде Вы выводите данные? Как данные у Вас хранятся?

s

Таблицу делаю в Qt Creator, заполняться она должна вручную с клавиатуры, потом эти значения должны обрабатываться и результат заноситься обратно в таблицу. Я не знаю как выбрать и занести данные в таблицу QTableWidget.

Вам нужно наследоваться от QAbstractTableModel, выбрать в каких контейнерах и как будите хранить данные и уже у них по индексу будите получать данные.
Вот под рукой пример был на питоне, на плюсах также

class ModelHosts(QAbstractTableModel):# модель host
    hostStructure = []
    signalChangeChecked = pyqtSignal(int, bool)

    def __init__(self): # инициализация модели
        super(ModelHosts, self).__init__()
        self.hostStructure = []

    def setDataAll(self, hostStructure): # ввод данных в модель
        self.hostStructure = hostStructure

    def clearModel(self): # очитка модели
        self.hostStructure = []

    def getId(self, row):
        return self.hostStructure[row].id

    def getHostStructur(self, row):
        return self.hostStructure[row]

    def rowCount(self, parent=None): # возвращает число строк
        return len(self.hostStructure)

    def columnCount(self, parent=None):  # возвращает число столбцов
        return 5

    def data(self, index, role=None): # возвращает данные для ячеек
        if   index.column() == 0 and role == 0:
            return self.hostStructure[index.row()].name
        elif index.column() == 1 and role == 0:
            return self.hostStructure[index.row()].host
        # elif index.column() == 1 and role == 10:
        #     return self.hostStructure[index.row()].checked
        elif index.column() == 2 and role == 0:
            return self.hostStructure[index.row()].port
        elif index.column() == 3 and role == 0:
            return self.hostStructure[index.row()].pathFolder
        elif index.column() == 4 and role == 0:
            return self.hostStructure[index.row()].description
        return None

    def headerData(self, section, orientation, role=None): # возвращает названия столбцов
        if section == 0 and role == QtCore.Qt.DisplayRole and orientation == 1:
            return "Имя хоста"
        elif section == 1 and role == QtCore.Qt.DisplayRole and orientation == 1:
            return "Путь хоста"
        elif section == 2 and role == QtCore.Qt.DisplayRole and orientation == 1:
            return "Порт"
        elif section == 3 and role == QtCore.Qt.DisplayRole and orientation == 1:
            return "Директория федерации"
        elif section == 4 and role == QtCore.Qt.DisplayRole and orientation == 1:
            return "Описание"
        else:
            # return None
            return QAbstractTableModel.headerData( self, section, orientation, role )

s

Спасибо, разобрался, у меня получилось немного не так, таблица создавалась в Qt Creator,
рядом с таблицей поставил кнопку и вот слот обработки сигнала этой кнопки:

void MainWindow::on_pushButton_2_clicked()
{
int i = 1;
int j = 1;
QString str;

str = ui->tableWidget->item(i, j)->text(); //Запись данных ячейки в переменную

str = str + "aaa";   // Обработка данных
j++;                 // Выбор другой ячейка таблицы

ui->tableWidget->setItem( i, j, new QTableWidgetItem(str)); //Запись в ячейку из переменной

}

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting
TG

C++ - Test 001. The first program and data types

  • Result:53points,
  • Rating points-4
TG

C++ - Test 001. The first program and data types

  • Result:60points,
  • Rating points-1
TN

C++ - Test 001. The first program and data types

  • Result:40points,
  • Rating points-8
Last comments
t
  • t1m4
  • Jan. 23, 2021, 8:28 a.m.

Django - Tutorial 052. Redefining a User Model

Добрый день, Я вот написал в admin.py admin.site.register(User, UserAdmin) Но у меня не появилось новые поля в админке?

Django - Tutorial 001. Deploying a site on Django + PostgreSQL + Gunicorn + Nginx

Ошибка в конфиге инжинкса про статику в root последний слеш лишний путь в таком виде получается /home/user/myprojectenv/myproject/myproject//static
  • Jurij
  • Jan. 20, 2021, 1:34 p.m.

Qt/C++ - Lesson 061. Adding images to the application using the Drag And Drop method from the file manager

// Вместо отрисовки иконки и текста будем отрисовывать только одно изображение // с небольшими отступами в 5 пикселей QPixmap pix(m_model->data(index).toString()); …
m
  • magrif
  • Jan. 19, 2021, 12:37 p.m.

Qt Сертификация

Здравствуйте. Подскажите, оплачивать ваучер прямо в выбранном тестовом центре? Можно ли загранник предъявить? Или свой паспорт, а заполнить транслитом? А то там пишут: Your name must exactl…
r
  • retmas
  • Jan. 17, 2021, 4:09 a.m.

Qt/C++ - Tutorial 074. Generating pseudo-random numbers, using STD library random

Дмитрий, решает. Просто автор, видимо, не сильно озаботился изучением документации QRandomGenerator. Да и в листинге с использованием qrand вызов функции qsrand на каждой итерации цикла нав…
Now discuss on the forum
D

QScrollArea dynamically add QCheckBoxes

Привет всем участникам! Класный у вас сайт! Нашёл познавательное в сети: «Марш достоинства»: тысячи испанцев требуют социальной справедливости http://electek.ru/news/11182-marsh-dostoinstva…

Не получается prefetch_related на M2M полях

это да. и правильнее всего было бы сделать все фильтрации и только в самом конце вызвать prefetch_related например, если все это уходит в шаблон, я бы поступил следующим образом: def so…
  • BlinCT
  • Jan. 23, 2021, 9:25 a.m.

Правильное расположение элементов в ListView

Вся проблема в тмо что у меня репитор который должен правильно создавать по индексам эти ячейки. В случаи данной момедли 2 столбца а после засунуть туда правильный текст из модели. Вот тут какой…
s

qml и С++ setproperty

Доброе время суток. Вопрос может быть банальный... но не для меня ((( есть ли возможность при создании динамической переменной через функцию с++ "setProperty" этой переменной пол…

Ошибка при работе утилиты не удалось получить фабрику класса com для компонента с clsid

Проблема решилась. Оказывается для работы нужно чтобы был установлен Microsoft Office. Причем об этом нигде не было сказано.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB