s
Қар. 25, 2020, 2:43 Т.Ж.

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

table

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

3

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
Михаиллл
  • Қар. 25, 2020, 3:03 Т.Ж.

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

    M
    • Қар. 25, 2020, 3:05 Т.Ж.
    • (өңделген)

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

      s
      • Қар. 25, 2020, 5:58 Т.Қ.

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

        Михаиллл
        • Қар. 25, 2020, 6:14 Т.Қ.

        Вам нужно наследоваться от 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
          • Қар. 27, 2020, 11:44 Т.Қ.

          Спасибо, разобрался, у меня получилось немного не так, таблица создавалась в 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)); //Запись в ячейку из переменной

          }

            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз