Russian Qt Forum
Июнь 03, 2024, 17:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit  (Прочитано 4594 раз)
Дуб
Гость
« : Май 11, 2006, 16:42 »

Доброго времени суток. Вроде бы элементарная вещь,
но вот затыка.
Есть QTreeWidget , На нем имеется несколько
QTreeWidgetItem , Они, в свою очередь, в колонке  № 7 (визуально),
имеют вместо текста QLineEdit.   Вот с этого QLineEdit надо получить текст.
Для этого я сначала использовал
Код:
QString buf; 
for(int i=0;i<treeWidget->topLevelItemCount();i++)
{
   buf = (QLineEdit*)treeWidget->itemWidget(treeWidget->topLevelItem(i), 6)->text();
...
}
Прога компилилась и вылетала на этой строке.
Указатель на QlineEdit  получался равным 0.
Я предположил , что нумерация начинается не с 0 , а с 1,
но эффекта это не дало.
Далее, по совету , я заменил строку
Код:
 buf = (QLineEdit*)treeWidget->itemWidget(treeWidget->topLevelItem(i), 6)->text(); 

на
Код:
buf =qobject_cast<QLineEdit*>(treeWidget->itemWidget(treeWidget->topLevelItem(i),6))->text(); 

Лучше работать не стала. Перепробовал достаточно вариаций,
но эффекта все равно нет. Как же его вытащить?
Записан
Sergeich
Гость
« Ответ #1 : Май 11, 2006, 17:05 »

А на хрена ваще для айтема виджет устанавливать? Не проще QTreeWidgetItem::setFlags(...) заюзать а потом QTreeWidgetItem::text() спокойно пользовать?
Записан
Дуб
Гость
« Ответ #2 : Май 11, 2006, 17:34 »

Qt::ItemIsEditable ? И ФФСЁ? ВОТЕТА АХТУНГ!
А я тут корячусь...
Записан
Sergeich
Гость
« Ответ #3 : Май 11, 2006, 17:38 »

Cлиф защщитан  :lol:
Записан
Дуб
Гость
« Ответ #4 : Май 11, 2006, 18:13 »

а как сделать, чтобы можно было  редактировать только 7 столбец,
а остальные низзя?

добавлено спустя:

 сделал , надо создать слот
Код:

void fCloneSbor::slotOnly7(QTreeWidgetItem * item, int column)
{

  if(item==0) return;
  item->setFlags(Qt::ItemIsSelectable);
  if(column == 6)   item->setFlags(Qt::ItemIsEditable);
}


И соединить его с сигналом

void QTreeWidget::itemClicked ( QTreeWidgetItem * item, int column )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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