идея такая: в таблице юзер начинает вбиватьназвание фирмы, тут же всплывает список фирм, в названии которых имеется введенная строка. Чем больше написано, тем меньший список показывается.
К нужной колонке делаю делегат на основе QLineEdit, чтобы ловить сигнал textEdited(QString). Выводить список хочу в QListWidget. С ним-то и проблема. Чтобы его перезаполнять и не перерисовывать, объявил его в самом классе
class tcDelegate:public QItemDelegate
{//список транспортных компаний
Q_OBJECT
public:
tcDelegate(QObject *parent=0);
QWidget *createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index) const;
void setEditorData(QWidget *editor,const QModelIndex &index) const;
void setModelData(QWidget *editor,QAbstractItemModel *model,const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option,const QModelIndex &index) const;
protected:
QListWidget *tmp_list;
QMap<QString,int> tcmap;
protected slots:
void slotWriteText(QWidget *editor);
void slotReFill(QString);
};
пытаюсь связать список с редактируемой ячейкой, чтобы он был в районе нее и нужной ширины
QWidget *tcDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem &,const QModelIndex &) const
{
QLineEdit *editor=new QLineEdit(parent);
this->tmp_list=new QListWidget(parent);...
connect(this->tmp_list,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(slotWriteText()));
this->tmp_list->show();
}
компилятор ругается
ошибка: assignment of member 'tcDelegate::tmp_list' in read-only object
не важно, protected этот List или public
Пытаюсь задать ему геометрию фиксированно
this->tmp_list->setGeometry(50,50,100,100);
- вылетает Segmentation fault. Ну, логично, он же не поймешь к кому относится.
Объясните, как реализовать свою идею?