実行時に、次のように QTreeWidget に QCombobox を挿入しました。
//global defines
#define COLUMN_1 (0)
#define COLUMN_2 (1)
//Init QComboBox to QTreeWidget - works fine.
QTreeWidgetItem *item = new QTreeWidgetItem(_myTreeWidget);
item->setText(COLUMN_1,"testing");
QComboBox *box = new QComboBox();
box->addItem("select1");
box->addItem("select2");
box->addItem("select3");
_myTreeWidget->setItemWidget(item, 1, box);
上記のコードは機能しますが、これらの列のデータ テキストも読みたいと思います。例えば。上記のコードから文字列「testing」と「select2」を取得します。問題は、コンボボックスで「QComboBox::currentText()」を読み取る方法がわからないことです。私が試してみました:
QTreeWidgetItemIterator it(_myTreeWidget);
while(*it)
{
QTreeWidgetItem *item = *it;
QVariant first = item->text(COLUMN_1);
QString firstStr = loggerName.toString(); //this works
QComboBox *box = (QComboBox*)item->data(COLUMN_2, 0);
QString boxValStr = box->text().toString(); //this doesn't works, always empty string
//... more code to handle strings...
it++;
}
「item->data(COLUMN_2, 0)」は QVariant を返すため、間違った方法のように感じます。この問題の解決策は?