Qt setHorizontalHeaderLabels для tableWidget


Как я буду использовать свойство setHorizontalHeaderLabels моего tableWidget для указания имен для моих столбцов, а не чисел? Я хочу сохранить мои строки в виде чисел, но изменить мои столбцы на имена, которые я собрал в QList .

Прямо сейчас у меня есть значения для строки и столбца, заданные как целые числа. Когда я пытаюсь использовать setHorizontalHeaderLabels , кажется, что целочисленные значения для столбцов переопределяют столбец имена, которые я пытаюсь указать, и я не знаю, как это исправить.

Вот как я устанавливаю значения в настоящее время, которые просто включают целочисленные значения для моих строк и столбцов:

    QList< QStringList > columnHeaderList; 

    //--- create the horizontal (column) headers
    QStringList horzHeaders;
    ui->tableWidget_inputPreview->setHorizontalHeaderLabels( horzHeaders );
    horzHeaders << "test1" << "test2" << "test3"; 

    ui->tableWidget_inputPreview->setRowCount( rowList.size() - 1 );
    ui->tableWidget_inputPreview->setColumnCount( columnHeaderList[0].size() );

for ( int row = 0; row < rowList.size(); ++row ) {
    for ( int column = 0; column < rowList[row].size(); ++column ) {
        ui->tableWidget_inputPreview->setItem(row, column, new QTableWidgetItem(rowList[row][column]));
    }
}

Мне нужно некоторое руководство о том, как правильно взять значения из моего QList и установить столбцы в качестве этих значений для моего tableWidget. Столбцы, которые появляются в моем tableWidget: 1, 2, 3, 4, 5, 6, 7 который исходит из количества элементов, передаваемых ему в setColumnCount вместо test1, test2, test3.

2 5

2 ответа:

В вашем примере вы устанавливаете setHorizontalHeaderLabels в пустой список. Обязательно заполните его перед установкой заголовков. Кроме того, установите заголовки после установки количества столбцов.

Это тот порядок, который вы хотите:

//--- create the horizontal (column) headers
QStringList horzHeaders;
horzHeaders << "test1" << "test2" << "test3";
ui->tableWidget_inputPreview->setRowCount( rowList.size() - 1 );
ui->tableWidget_inputPreview->setColumnCount( columnHeaderList[0].size() );
ui->tableWidget_inputPreview->setHorizontalHeaderLabels( horzHeaders );

Также осознайте, что вызов ui->tableWidget_inputPreview->clear() удалит метки.

Рассмотрим ui->tableWidget_inputPreview->clearContents(), чтобы сохранить метки.