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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox completer сбивается индекс!!!  (Прочитано 4674 раз)
majatu
Гость
« : Июнь 04, 2009, 13:34 »

Очень нужна Ваша помощь,
есть combobox , заполняется из модели , ставлю , чтобы появлялся комплитер,
но при выборе из списка комплитера, почему повтороно при нажатии на комбобокс индекс стоит не тот
т.е. комплитер не проставляет индекс у комбобокса насколько я понял, почему? и как это исправить?
вот код

Код:
QComboBox *cb=new QComboBox();
                cb->setModel(this->productModel);
                cb->setModelColumn(1);
                cb->setEditable(true);
                cb->setAutoCompletion(true);
                cb->setAutoCompletionCaseSensitivity(Qt::CaseInsensitive);
                cb->completer()->setCompletionMode(QCompleter::PopupCompletion);


P.S. При нажатии Enter индекс проставляется, а как сделать чтобы индекс проставлялся из выпадающего списка комплитера?
« Последнее редактирование: Июнь 04, 2009, 16:35 от majatu » Записан
majatu
Гость
« Ответ #1 : Июнь 10, 2009, 10:39 »

решено
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Июнь 10, 2009, 13:06 »

И какое решение?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
-QT-
Гость
« Ответ #3 : Июнь 11, 2009, 13:47 »

Да очень интересно знать !
Записан
majatu
Гость
« Ответ #4 : Июнь 11, 2009, 13:58 »

ставить tableview на completer popup и combobox и на комплитер событие highlighted с индексом
 + можно будет выбирать не только первое значение, стандартно, если нажать вниз на popup completer, но и остальные
 + собственные стили
 + еще куча всего полезного
 + выбирание индекса мышью, а не только enter

получится наподобии firefox панелька гугл с выпадающим списком

а стандартно фиг...

вот код перехватичика

Код:
void EventDialog::popUpIndex(QModelIndex s)
{
    QCompleter * cl = qobject_cast<QCompleter * >(sender());
    QComboBox * cb = qobject_cast<QComboBox * >(sender()->parent());
 
    int completer_id=cl->completionModel()->data(cl->completionModel()->index(s.row(),0)).toInt();
 
    QModelIndexList indexList = cb->model()->match(cb->model()->index(0,0), Qt::DisplayRole, completer_id, 1, Qt::MatchExactly);
    if(indexList.count())
    {
        QModelIndex index=indexList.first();
        cb->setCurrentIndex(index.row());
    }
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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