crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QTableWidget и список выделенных строк через Ctrl
RazrFalcon
  опции профиля:
сообщение 12.3.2011, 19:06
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Выделяются только строки, так как:
table->setSelectionBehavior(QAbstractItemView::SelectRows);

Если выбрать одну - все нормально. Выделить мышкой несколько, или с шифтом - тоже нормально.
А если выделять строки через Ctrl+ЛКМ - оно понимает количество выделенных строк, но значения в них только из первой выделенной.

Пример:
Цитата(Shift)
"As Daylight Dies"
"Guardians At The Gate"
"No Return"

Цитата(Ctrl)
"As Daylight Dies"
"As Daylight Dies"
"As Daylight Dies"


Список получаю так:
List<QTableWidgetItem *> selectedList = table->selectedItems();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 12.3.2011, 23:01
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ну... супер!!!

ЗЫ.
Вопрос-то где? ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 12.3.2011, 23:07
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Вопрос в том, что
List<QTableWidgetItem *> selectedList = table->selectedItems();

выдает мне такое вывод
"As Daylight Dies"
"As Daylight Dies"
"As Daylight Dies"

то есть все строки "равны" первой выделенной.

А мне нужно получить номера строк, которые выделены.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 12.3.2011, 23:31
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


ща че-нить отвечу )))))0
------------------------

У себя проверил - все работает как не выделяй. Qt 4.7.1. Покажи код, как именно получаешь текст из selectedList?

Сообщение отредактировал Rocky - 12.3.2011, 23:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 0:05
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


MainWindow::MainWindow()
{
    connect(table,SIGNAL(itemSelectionChanged()),this,SLOT(on_itemSeletionCahnged()));
}

void MainWindow::on_itemSeletionCahnged()
{
    QList<QTableWidgetItem *> selectedList =  table->selectedItems();
    qDebug()<<"Count:"<<selectedList.count();
    qDebug()<<"Row 1:"<<selectedList.at(0)->row();
    qDebug()<<"Row 2:"<<selectedList.at(1)->row();
    qDebug()<<"Row 4:"<<selectedList.at(2)->row();
}


Цитата
Count: 42 //тут через shift c 1 по 3
Row 1: 0
Row 2: 1
Row 4: 2
Count: 42 //тут через ctrl c 1 по 3
Row 1: 0
Row 2: 0
Row 4: 0


Тоже самое и тут:
void MainWindow::on_cellClicked(int row,int)
{
    QList<QTableWidgetItem *> selectedList =  table->selectedItems();
    qDebug()<<"Count:"<<selectedList.count();

    QStringList templist1;
    for (int i=0; i<selectedList.count()/14; i++)
    {
        templist1.append(table->item(selectedList.at(i)->row(),0)->text());
        qDebug()<<table->item(selectedList.at(i)->row(),0)->text();
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 13.3.2011, 0:36
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ну так все правильно ты и получаешь. У тебя selectedList что содержит? Айтемы а не ряды. Тебе нужно цикл по всем айтемам делать, а уже внутри разруливать через continue в случае если колонка айтема - не та, которая тебе нужна.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 1:17
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я знаю. Ошибка была рядом. Теперь работает.
void MainWindow::on_cellClicked(int row,int)
{
   QList<QTableWidgetItem *> selectedList =  table->selectedItems();
   for (int i=0; i<selectedList.count(); i+=14) //14 - количество столбцов.
    {
        qDebug()<<selectedList.at(i)->text();
    }
}

У меня был слишком муторный способ.

Сообщение отредактировал RazrFalcon - 13.3.2011, 1:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.11.2019, 1:49