Russian Qt Forum
Ноябрь 27, 2024, 08:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: всплывающий список для делегата  (Прочитано 2409 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Ноябрь 30, 2017, 13:23 »

идея такая: в таблице юзер начинает вбиватьназвание фирмы, тут же всплывает список фирм, в названии которых имеется введенная строка. Чем больше написано, тем меньший список показывается.
К нужной колонке делаю делегат на основе 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. Ну, логично, он же не поймешь к кому относится.
Объясните, как реализовать свою идею?
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #1 : Декабрь 01, 2017, 15:08 »

в общем, все решилось использованием QListWidget+QCompleter в отдельном классе, который инициализировался при запуске делегата. Тема закрыта
« Последнее редактирование: Декабрь 01, 2017, 15:10 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 22.