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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] QCompleter динамически удалить элемент из списка  (Прочитано 2362 раз)
thechicho
Гость
« : Февраль 08, 2014, 19:59 »

есть QCompleter и QLineEdit;
сделал динамическое добавление в список, его сохранение и восстановление из QSettings.
хотел сделать удаление элемента из списка по клику правой мышкой, но не получилось просто разобраться.
как можно отловить клик правой мышки именно по элементу списка QCompleter?

или как это все можно проще реализовать? нужно чтобы при клике в QLineEdit появлялся список записей, которые были когда-либо туда введены (сохранение макс 10 записей, при добавлении больше 10, старая запись из 10 уже существующих удаляется (нижняя), новая добавляется (верхняя)). при клике правой мышкой на любую запись - происходит ее удаление из списка.
« Последнее редактирование: Февраль 09, 2014, 13:10 от thechicho » Записан
thechicho
Гость
« Ответ #1 : Февраль 09, 2014, 13:09 »

Код
C++ (Qt)
class ListView : public QListView
{
   Q_OBJECT
 
signals:
   void removeRow(int);
 
protected:
   void mouseReleaseEvent(QMouseEvent *event) {
       QListView::mouseReleaseEvent(event);
       if (event->button() == Qt::RightButton) {
           emit removeRow(this->selectionModel()->selectedRows().first().row());
       }
   }
};
Код
C++ (Qt)
   QCompleter *completer = new QCompleter(completerWords, this);
   ListView *listView = new ListView;
   connect(listView, SIGNAL(removeRow(int)), this, SLOT(removeRow(int)));
   completer->setPopup(listView);
   completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
   completer->setMaxVisibleItems(10);
   ui->lineEdit->setCompleter(completer);
 
void Gui::removeRow(int row)
{
   ui->lineEdit->completer()->model()->removeRow(row);
   ui->lineEdit->completer()->complete();
}
« Последнее редактирование: Февраль 09, 2014, 13:12 от thechicho » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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