crossplatform.ru

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


  Ответ в QTableWidget и список выделенных строк через Ctrl
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RazrFalcon Дата 13.3.2011, 1:17
  Я знаю. Ошибка была рядом. Теперь работает.
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();
    }
}

У меня был слишком муторный способ.
Rocky Дата 13.3.2011, 0:36
  Ну так все правильно ты и получаешь. У тебя selectedList что содержит? Айтемы а не ряды. Тебе нужно цикл по всем айтемам делать, а уже внутри разруливать через continue в случае если колонка айтема - не та, которая тебе нужна.
RazrFalcon Дата 13.3.2011, 0:05
 
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 Дата 12.3.2011, 23:31
  ща че-нить отвечу )))))0
------------------------

У себя проверил - все работает как не выделяй. Qt 4.7.1. Покажи код, как именно получаешь текст из selectedList?
RazrFalcon Дата 12.3.2011, 23:07
  Вопрос в том, что
List<QTableWidgetItem *> selectedList = table->selectedItems();

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

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

А мне нужно получить номера строк, которые выделены.
Rocky Дата 12.3.2011, 23:01
  Ну... супер!!!

ЗЫ.
Вопрос-то где? ))
RazrFalcon Дата 12.3.2011, 19:06
  Выделяются только строки, так как:
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();
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 4:22