Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Дуб от Май 11, 2006, 16:42



Название: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit
Отправлено: Дуб от Май 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(); 

Лучше работать не стала. Перепробовал достаточно вариаций,
но эффекта все равно нет. Как же его вытащить?


Название: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit
Отправлено: Sergeich от Май 11, 2006, 17:05
А на хрена ваще для айтема виджет устанавливать? Не проще QTreeWidgetItem::setFlags(...) заюзать а потом QTreeWidgetItem::text() спокойно пользовать?


Название: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit
Отправлено: Дуб от Май 11, 2006, 17:34
Qt::ItemIsEditable ? И ФФСЁ? ВОТЕТА АХТУНГ!
А я тут корячусь...


Название: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit
Отправлено: Sergeich от Май 11, 2006, 17:38
Cлиф защщитан  :lol:


Название: QT-4.1.1,QTreeWidgetItem - не удается получить QLineEdit
Отправлено: Дуб от Май 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 )