Wiem, że to stare pytanie, ale myślę, że mam bardziej szczegółową odpowiedź. Aby uzyskać dowolną funkcjonalność z QComboBox, prawdopodobnie będziesz musiał ją podklasować. Oto rozwiązanie, które wymyśliłem:
#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);
Mam nadzieję, że ktoś pomoże w potrzebie QComboBox wewnątrz z QTreeWidgetItem!
Dzięki, to jest bardzo emocjonalny sposób odpowiadania, zastanawiam się, kto wybrał najlepszą odpowiedź! – Orochi
Cóż, pytanie zostało opublikowane w 2009 r., A ja odpowiedziałem na to w 2011 r., Więc jestem pewien, że właśnie dlatego. –
:) Ale dzięki i .... naprawdę pomocne, ponieważ myślałem o użyciu delegatów do poglądów, ale to rozwiązanie jest znacznie łatwiejsze – Orochi