Ich weiß, das ist eine alte Frage, aber ich denke, ich habe eine gründlichere Antwort. Um die Funktionalität von QComboBox zu erhalten, müssen Sie wahrscheinlich eine Unterklasse erstellen. Hier ist die Lösung, die ich kam mit:
#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);
Ich hoffe, dass jemand in der Notwendigkeit einer QComboBox innerhalb eines QTreeWidgetItem hilft!
Danke, das ist viel affektive Art der Antwort, ich frage mich, wer die beste Antwort wählte !! – Orochi
Nun, die Frage wurde im Jahr 2009 veröffentlicht und ich habe sie 2011 beantwortet, deshalb bin ich mir sicher, dass das der Grund ist. –
:) Aber danke trotzdem .... wirklich hilfreich, wie ich Delegaten für die Ansichten zu verwenden gedacht war, aber diese Lösung ist viel einfacher – Orochi