Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Dimas от Октябрь 29, 2015, 10:59



Название: Перемещение колонок в QTableWidget и сохранение в txt
Отправлено: Dimas от Октябрь 29, 2015, 10:59
Создаю таблицу QTableWidget.
Разрешаю передвижение колонок
Код:
ui->tableWidget->horizontalHeader()->setMovable(true);

Задача сохранить таблицу формате txt. На примере QTextEdit делаю так:

Код:
    ui->textEdit->clear();

    QStringList sList;
    sList.push_back("");

    //Шапка
    for (int column=0; column<ui->tableWidget->columnCount(); column++)
    {
        //sList.push_back(ui->tableWidget->horizontalHeaderItem(column)->text());
        sList.push_back(ui->tableWidget->horizontalHeaderItem(ui->tableWidget->visualColumn(column))->text());
    }

    sList.push_back("\n");

    //Сохранить в txt
    ui->textEdit->insertPlainText(sList.join("\t")); //Шапка таблицы

    //Тело таблицы
    for (int row=0; row<ui->tableWidget->rowCount(); row++)
    {
        sList.clear();

        //Название строки
        sList.push_back(ui->tableWidget->verticalHeaderItem(row)->text());

        for (int column=0; column<ui->tableWidget->columnCount(); column++)
        {
            //Данные таблицы
            //sList.push_back(ui->tableWidget->item(row, column)->text());
            sList.push_back(ui->tableWidget->item(row, ui->tableWidget->visualColumn(column))->text());
        }

        sList.push_back("\n");

        //Запись строки
        ui->textEdit->insertPlainText(sList.join("\t"));
    }

Перемещая колонки мышкой не во всех вариантах работает. В чем может быть причина, что я сделал не так?

Прилагаю маленький пример кода в минипроекте.


Название: Re: Перемещение колонок в QTableWidget и сохранение в txt
Отправлено: Dimas от Ноябрь 02, 2015, 08:31
Вопрос решил сам. Надо было делать так:

Код:
        int visualColumn=ui->tableWidget->horizontalHeader()->logicalIndex(column);
        sList.push_back(ui->tableWidget->horizontalHeaderItem(visualColumn)->text());