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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidget поменять столбцы местами  (Прочитано 4044 раз)
luksing
Гость
« : Июнь 12, 2013, 17:47 »

Здравствуйте! Не могу найти решения для своей задачи. Необходимо считать из файла квадратную матрицу, вывести ее с помощью элемента TableWidget, а затем поменять местами первый и последний столбец. Я сделал с помощью вектора и еще одного файла, куда записывается измененная матрица и заново выводится, но необходимо сделать с помощью функций работы с таблицей   
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июнь 12, 2013, 19:21 »

просто последовательно меняешь местами значения первого и последнего столбца:
Код
C++ (Qt)
for (int i = 0, rows = tableWidget->rowCount(), lastColumn = tableWidget->columnCount() - 1; i < rows; ++i)
{
   QTableWidgetItem *lastColumnItem = tableWidget->item(i, lastColumn), *firstColumnItem = tableWidget->item(i, 0);
   QString lastColumnValue = lastColumnItem->text();
   lastColumnItem->setText(firstColumnItem->text());
   firstColumnItem->setText(lastColumnValue);
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Июнь 12, 2013, 21:31 »

Код
C++ (Qt)
QTableWidget::header()->swapSections( int first, int second );
QTableWidget::header()->moveSection( int from, int to );
Записан

Qt 5.11/4.8.7 (X11/Win)
luksing
Гость
« Ответ #3 : Июнь 13, 2013, 00:02 »

Большое спасибо! Разобрался)) только в таком виде
Код:
for (int i = 0, rows = tableWidget->rowCount(), lastColumn = tableWidget->columnCount() - 1; i < rows; ++i)
{
    QTableWidgetItem *lastColumnItem = tableWidget->item(i, lastColumn), *firstColumnItem = tableWidget->item(i, 0);
    QString lastColumnValue = lastColumnItem->text();
    lastColumnItem->setText(firstColumnItem->text());
    firstColumnItem->setText(lastColumnValue);
}
была ошибка "tableWidget was not declared in this scope". Немного изменил и все заработало
Код:
int rows=ui->tableWidget->rowCount();
        int lastColumn=ui->tableWidget->columnCount() - 1;
        for (int i = 0; i < rows; ++i)
        {
            QTableWidgetItem *lastColumnItem = ui->tableWidget->item(i, lastColumn), *firstColumnItem =ui-> tableWidget->item(i, 0);
            QString lastColumnValue = lastColumnItem->text();
            lastColumnItem->setText(firstColumnItem->text());
            firstColumnItem->setText(lastColumnValue);
        }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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