Russian Qt Forum
Ноябрь 25, 2024, 11:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перемещение колонок в QTableWidget и сохранение в txt  (Прочитано 2894 раз)
Dimas
Чайник
*
Offline Offline

Сообщений: 50



Просмотр профиля
« : Октябрь 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"));
    }

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

Прилагаю маленький пример кода в минипроекте.
« Последнее редактирование: Октябрь 30, 2015, 11:15 от Dimas » Записан

qt 4.8.6, qt 5.12.4
Dimas
Чайник
*
Offline Offline

Сообщений: 50



Просмотр профиля
« Ответ #1 : Ноябрь 02, 2015, 08:31 »

Вопрос решил сам. Надо было делать так:

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

Записан

qt 4.8.6, qt 5.12.4
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.