Sé que esta es una vieja pregunta, pero creo que tengo una respuesta más completa. Para obtener cualquier funcionalidad de QComboBox, es probable que deba subclasificarla. Aquí está la solución que se me ocurrió:
#ifndef COMBOBOXITEM_H
#define COMBOBOXITEM_H
#include
class ComboBoxItem : public QComboBox
{
Q_OBJECT
private:
QTreeWidgetItem *item;
int column;
public:
ComboBoxItem(QTreeWidgetItem*, int);
public slots:
void changeItem(int);
};
ComboBoxItem::ComboBoxItem(QTreeWidgetItem *item, int column)
{
this->item = item;
this->column = column;
connect(this, SIGNAL(currentIndexChanged(int)), SLOT(changeItem(int)));
}
void ComboBoxItem::changeItem(int index)
{
if(index >=0)
{
item->setData(this->column, Qt::UserRole, this->itemText(index));
qDebug() item->data(this->column, Qt::UserRole).toString();
}
}
#include "moc_ComboBoxItem.cpp"
#endif // COMBOBOXITEM_H
////// Sample implementation..
lst = new QTreeWidget;
// Snip
QTreeWidgetItem *itm = new QTreeWidgetItem;
// Snip
ComboBoxItem *cmb = new ComboBoxItem(itm, 1);
cmb->addItem("One");
cmb->addItem("Two");
cmb->addItem("Three");
cmb->addItem("Four");
lst->setItemWidget(itm, 1, cmb);
Espero que ayude a alguien en necesidad de un QComboBox en el interior de un QTreeWidgetItem!
Gracias, esta es una manera muy afectiva de responder, me pregunto quién eligió la mejor respuesta !! – Orochi
Bueno, la pregunta fue publicada en 2009 y la contesté en 2011, así que estoy seguro de por qué. –
:) Pero gracias de todos modos ... realmente útil ya que estaba pensando en usar delegados para las vistas, pero esta solución es mucho más fácil – Orochi