s
Nov. 25, 2020, 2:43 a.m.

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

table

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

3

Do you like it? Share on social networks!

5
Михаиллл
  • Nov. 25, 2020, 3:03 a.m.

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

    M
    • Nov. 25, 2020, 3:05 a.m.
    • (edited)

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

      s
      • Nov. 25, 2020, 5:58 p.m.

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

        Михаиллл
        • Nov. 25, 2020, 6:14 p.m.

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

        1. class ModelHosts(QAbstractTableModel):# модель host
        2. hostStructure = []
        3. signalChangeChecked = pyqtSignal(int, bool)
        4.  
        5. def __init__(self): # инициализация модели
        6. super(ModelHosts, self).__init__()
        7. self.hostStructure = []
        8.  
        9. def setDataAll(self, hostStructure): # ввод данных в модель
        10. self.hostStructure = hostStructure
        11.  
        12. def clearModel(self): # очитка модели
        13. self.hostStructure = []
        14.  
        15. def getId(self, row):
        16. return self.hostStructure[row].id
        17.  
        18. def getHostStructur(self, row):
        19. return self.hostStructure[row]
        20.  
        21. def rowCount(self, parent=None): # возвращает число строк
        22. return len(self.hostStructure)
        23.  
        24. def columnCount(self, parent=None): # возвращает число столбцов
        25. return 5
        26.  
        27. def data(self, index, role=None): # возвращает данные для ячеек
        28. if index.column() == 0 and role == 0:
        29. return self.hostStructure[index.row()].name
        30. elif index.column() == 1 and role == 0:
        31. return self.hostStructure[index.row()].host
        32. # elif index.column() == 1 and role == 10:
        33. # return self.hostStructure[index.row()].checked
        34. elif index.column() == 2 and role == 0:
        35. return self.hostStructure[index.row()].port
        36. elif index.column() == 3 and role == 0:
        37. return self.hostStructure[index.row()].pathFolder
        38. elif index.column() == 4 and role == 0:
        39. return self.hostStructure[index.row()].description
        40. return None
        41.  
        42. def headerData(self, section, orientation, role=None): # возвращает названия столбцов
        43. if section == 0 and role == QtCore.Qt.DisplayRole and orientation == 1:
        44. return "Имя хоста"
        45. elif section == 1 and role == QtCore.Qt.DisplayRole and orientation == 1:
        46. return "Путь хоста"
        47. elif section == 2 and role == QtCore.Qt.DisplayRole and orientation == 1:
        48. return "Порт"
        49. elif section == 3 and role == QtCore.Qt.DisplayRole and orientation == 1:
        50. return "Директория федерации"
        51. elif section == 4 and role == QtCore.Qt.DisplayRole and orientation == 1:
        52. return "Описание"
        53. else:
        54. # return None
        55. return QAbstractTableModel.headerData( self, section, orientation, role )
        56.  
          s
          • Nov. 27, 2020, 11:44 p.m.

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

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

          1. str = ui->tableWidget->item(i, j)->text(); //Запись данных ячейки в переменную
          2.  
          3. str = str + "aaa"; // Обработка данных
          4. j++; // Выбор другой ячейка таблицы
          5.  
          6. ui->tableWidget->setItem( i, j, new QTableWidgetItem(str)); //Запись в ячейку из переменной

          }

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Last comments
            • AK
              April 1, 2025, 11:41 a.m.
              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
            • Evgenii Legotckoi
              March 9, 2025, 9:02 p.m.
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
            • VP
              March 9, 2025, 4:14 p.m.
              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
            • ИМ
              Nov. 22, 2024, 9:51 p.m.
              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            • Evgenii Legotckoi
              Oct. 31, 2024, 11:37 p.m.
              Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup