crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> QComboBox + список совпадений, как
vanvo
  опции профиля:
сообщение 11.2.2009, 14:27
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


ЙаМайскЫйПчОЛ, спасибо за предыдущий пост.
А как сделать, чтобы сравнение введенной строки в QComboBox с его содержимым происходило не с 1-го символа, а с каждого.
Поясню на примере: при вводе "чик", в QComboBox оставались не только "чик", "чик-чирик", а еще и "мальчик", "танчики".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2009, 15:32
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


vanvo, тут ключем будет не виджет (QComboBox), а настройки QCompleter.
Посмотри QCompleter::UnfilteredPopupCompletion

возможно подойдет, ну и вообще доку по QCompleter почитай.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 11.2.2009, 16:56
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 11.2.2009, 15:32) *
vanvo, тут ключем будет не виджет (QComboBox), а настройки QCompleter.
Посмотри QCompleter::UnfilteredPopupCompletion

возможно подойдет, ну и вообще доку по QCompleter почитай.

Ну QCompleter::UnfilteredPopupCompletion ничего хорошего не делает... лишь проматывает список до первого совпадения
Доку по QCompleter я смотрел, что-то тоже ничего хорошего там не нашел :( Может стоит работать со списком QStringList?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2009, 16:59
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vanvo @ 11.2.2009, 19:56) *
Может стоит работать со списком QStringList?
а зачем?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 11.2.2009, 18:57
Сообщение #15


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 11.2.2009, 16:59) *
Цитата(vanvo @ 11.2.2009, 19:56) *
Может стоит работать со списком QStringList?
а зачем?

Мутить что-то типа:
comboBoxService->clear();
listService = listService.filter(key);
comboBoxService->addItems(listService);
key - введенная строка в comboBoxService
Еще вопросец: как отследить изменение текста в QComboBox, если мы еще не нажали Enter?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2009, 19:04
Сообщение #16


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vanvo @ 11.2.2009, 21:57) *
Еще вопросец: как отследить изменение текста в QComboBox, если мы еще не нажали Enter?
лучше сделай отлеьную тему, она достаточно автономна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2009, 19:46
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


vanvo, я именно по указанному вопросу предлагал сделать новую тему (я ее переименовал)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 11.2.2009, 21:53
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сделал вот такую штуку
В главной функции:
QStringList list;
list << "mother" << "father" << "window" << "winamp" << "milk" << "milkway";
connect(comboBox, SIGNAL(editTextChanged(QString)), SLOT(mySlot(QString)));

void MainWindowImpl::mySlot (QString text)
{
    comboBox->clear();
    QStringList result = list.filter(text, Qt::CaseInsensitive);
    comboBox->addItems(result);
}

При наборе букв, содержащихся в list, программа сразу же вылетает. Почему?
Если закоментить comboBox->clear();, то программа работает
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.2.2009, 22:00
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vanvo @ 12.2.2009, 0:53) *
При наборе букв, содержащихся в list, программа сразу же вылетает. Почему?
Если закоментить comboBox->clear();, то программа работает
почему при закоментированной отчистке продолжает работать я не знаю.
А почему аварийно завершается могу сказать, смотри:
Цитата
void QComboBox::addItems ( const QStringList & texts )

в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 11.2.2009, 22:43
Сообщение #20


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 18.8.2008
Пользователь №: 267

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 11.2.2009, 22:00) *
Цитата(vanvo @ 12.2.2009, 0:53) *
При наборе букв, содержащихся в list, программа сразу же вылетает. Почему?
Если закоментить comboBox->clear();, то программа работает
почему при закоментированной отчистке продолжает работать я не знаю.
А почему аварийно завершается могу сказать, смотри:
Цитата
void QComboBox::addItems ( const QStringList & texts )

в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти

Нет, дело не в памяти. Я список внутри слота объявил только для форума. А в программе объявление list и result происходит в описании класса.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 6:13