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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QTableWidget - получение данных из выделенной строки  (Прочитано 32692 раз)
wildcat
Гость
« Ответ #15 : Февраль 10, 2012, 14:42 »

Следуя Ваши советам ))

Код
C++ (Qt)
int usbController::s_buttonUpdate()
{
 
  int i= tableWidget->currentRow(); //строка
  if (tableWidget->selectedItems().isEmpty ())
  {
       return true;
  }
  qDebug() << i; //QTableWidget
 
  QString tx;
 
  for (int j=0; j<6; ++j)
  {
      tx=tableWidget->item(i,j)->text();
 
      switch (j) {
 
        case 0 :
           lineEdit_5->setText(tx); // группа
        case 1 :
           lineEdit_3->setText(tx);// контекст
        case 3 :
            lineEdit_1->setText(tx); // имя_носиетля
        case 4 :
            lineEdit_4->setText(tx); // имя владельца
        case 5 :
            lineEdit_2->setText(tx); // iSerial
 
      qDebug() << QString("Items in list: ") << tx;
            break;
               }
  }
   return true;
}
Записан
mutineer
Гость
« Ответ #16 : Февраль 10, 2012, 14:46 »

забыл в switch'е поставить break...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #17 : Февраль 10, 2012, 14:47 »

Код
C++ (Qt)
QMap <int, QLineEdit*> edits;
edits [0] = lineEdit_5;
edits [1] = lineEdit_3;
edits [3] = lineEdit_1;
edits [4] = lineEdit_4;
edits [5] = lineEdit_2;
 
 
for (int j=0; j<6; ++j) {
 if (edits.contains (j)) {
   const QString text = tableWidget->item(i,j)->text();
   edits [j]->setText (text);
 }
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #18 : Февраль 10, 2012, 14:52 »

Пантер, почему не просто QList? Улыбающийся
Код
C++ (Qt)
QMap <int, QLineEdit*> edits;
edits [0] = lineEdit_5;
...
 
Записан
wildcat
Гость
« Ответ #19 : Февраль 10, 2012, 14:56 »

Потрясающие возможности оптимизации кода. Спасибо Вам огромное.

Код
C++ (Qt)
int usbController::s_buttonUpdate()
{
 
  int i= tableWidget->currentRow(); //строка
  if (tableWidget->selectedItems().isEmpty ())
  {
       return true;
  }
 
  QMap <int, QLineEdit*> edits;
  edits [0] = lineEdit_5;
  edits [1] = lineEdit_3;
  edits [3] = lineEdit_1;
  edits [4] = lineEdit_4;
  edits [5] = lineEdit_2;
 
 
  for (int j=0; j<6; ++j) {
    if (edits.contains (j)) {
      const QString text = tableWidget->item(i,j)->text();
      edits [j]->setText (text);
    }
  }
   return true;
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #20 : Февраль 10, 2012, 14:59 »

BRE, обрати внимание на отсутствие индекса 2.
wildcat, контейнер лучше сделай мембером класса и заполни его в конструкторе.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
sudo
Гость
« Ответ #21 : Февраль 10, 2012, 15:02 »

И метод, в принципе, вполне может быть без возвращаемого значения. Типы возвращаемых значений реальные и в сигнатуре не совпадают, хотя true и кастанётся в единицу. Компилятор предупреждения не выдаёт?
Записан
BRE
Гость
« Ответ #22 : Февраль 10, 2012, 15:06 »

BRE, обрати внимание на отсутствие индекса 2.
Так 0, туда положить по этому индексу и проверку вместо contains. Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Февраль 10, 2012, 15:07 »

BRE, обрати внимание на отсутствие индекса 2.
Так 0, туда положить по этому индексу и проверку вместо contains. Улыбающийся

Можно и так. Улыбающийся Мне показалось с мапом проще для понимания.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
sudo
Гость
« Ответ #24 : Февраль 10, 2012, 15:09 »

wildcat, а не собираешься ли ты через эти lineEditы редактировать значения в TableView? А то может сейчас тебе нормальную модель сообразим, прям в ячейках можно будет редактировать
Записан
wildcat
Гость
« Ответ #25 : Февраль 10, 2012, 15:13 »

И метод, в принципе, вполне может быть без возвращаемого значения. Типы возвращаемых значений реальные и в сигнатуре не совпадают, хотя true и кастанётся в единицу. Компилятор предупреждения не выдаёт?

Не выдает.

Да вот вижу что нет индекса 2. Вот есть мысль как исправить... реализовать пытаюсь))) Дело в том что вот это значение это по сути номер столбца... После сортировки столбцов в TableWidget визуально столбцы поменялись местами, а индексы их остались. Вот пытаюсь визуальные переделать в фактические и тогда контейнер будет нормальным )))
Записан
wildcat
Гость
« Ответ #26 : Февраль 10, 2012, 15:17 »

wildcat, а не собираешься ли ты через эти lineEditы редактировать значения в TableView? А то может сейчас тебе нормальную модель сообразим, прям в ячейках можно будет редактировать

Да я думал что бы сделать редактор в ячейках... но не получится... Механизм очень сложный... Дело в том. что есть программа по регистрации usb носителей... Каждый носитель заносится в БД. Первый столбец в БД является контрольной суммой всех аргументов (владелец, серия, группа, название устройства)... По этому проще вызывать процесс и вставлять в него аргументы из LineEdit. А то придется реализовывать весь процесс подсчета контрольной суммы.
Записан
BRE
Гость
« Ответ #27 : Февраль 10, 2012, 15:25 »

Можно и так. Улыбающийся Мне показалось с мапом проще для понимания.
Для пониманию возможно, а по хорошему и QList там не нужен. Улыбающийся
Код
C++ (Qt)
QLineEdit *edits[] = { lineEdit_5, lineEdit_3, 0, lineEdit_4, lineEdit_1 };
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #28 : Февраль 10, 2012, 15:36 »

BRE, тогде еще и static const. Смеющийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #29 : Февраль 10, 2012, 15:43 »

BRE, тогде еще и static const. Смеющийся
При static массив будет инициализирован единожды, а если при очередном вызове указатели на объекты QLineEdit изменяться?
А при const компилятор нам не даст вызвать не const-методы (а setText как раз такой).
 Улыбающийся
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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