class Propreties: public QTableWidget { // ... void addProperty() { ... QStringList rgStrings; rgStrins << "ttyS0" << "ttyS1" << "ttyS2" << "ttyS3"; StringProperty* prop = newStringProp(..., rgStrings); // StringProp: public QItemDelegate setItemDelegateForRow(2, prop); }};
class GlobalWidget { ... Properies* props; void setProp(...) { props->set("ttyS2"); }};
Propreties->setItem(2,1,new QTableWidgetItem ("ttyS1"));
createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index){ QComboBox *editor=new QComboBox(this); editor.addItem("ttyS0"); ... return editor;}
setEditorData(QWidget *editor, const QModelIndex &index){ editor->setCurrentIndex(editor->findText("ttyS2"));//вместо этой строчки можно сделать извлечение данных из //QTableWidget по index и выставление нужной строчки}
в h-файле//...QComboBox *editor;//...в cpp-файлеQWidget* createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index){ editor=new QComboBox(this); editor.addItem("ttyS0"); ... return editor;}void setList(const QStringList& list){ editor->clear(); editor->addItems(list);}bool setListItem(int index, const QString& item){ if(index<0 || index>=editor->count()) return false; editor->setItemText(index, item); return false;}//по аналогии удаление и что-нибудь еще