QComboBox + список совпадений, как |
Здравствуйте, гость ( Вход | Регистрация )
QComboBox + список совпадений, как |
Константин |
11.2.2009, 22:56
Сообщение
#21
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
А почему аварийно завершается могу сказать, смотри: Цитата void QComboBox::addItems ( const QStringList & texts ) в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти ай-ай-ай, Юрий QStringList - это обёртка над QList<QString>, а QList, как известно, шаренный тип. т.о. проблема никак не в передаче по ссылке... |
|
|
vanvo |
11.2.2009, 23:08
Сообщение
#22
|
Студент Группа: Участник Сообщений: 73 Регистрация: 18.8.2008 Пользователь №: 267 Спасибо сказали: 0 раз(а) Репутация: 0 |
Может конечно все это и не нужно... Т.е. нужен, по сути, тот же самый QCompleter, но чтобы вхождение введенной в QComboBox строки искал не только с первого символа элементов списка.
|
|
|
Litkevich Yuriy |
11.2.2009, 23:31
Сообщение
#23
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я список внутри слота объявил только для форума. продолжай в томже духе, помощь прийдет быстро. ай-ай-ай, Юрий Хех, об этом я не подумал.QStringList - это обёртка над QList<QString>, а QList, как известно, шаренный тип. т.о. проблема никак не в передаче по ссылке... П.С. ко мне лучше на ты, мне так привычнее. |
|
|
SABROG |
11.2.2009, 23:31
Сообщение
#24
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
А что дебаггер говорит?
|
|
|
Константин |
12.2.2009, 0:07
Сообщение
#25
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
а по теме - у меня впечатление, что через QCompleter реализация подобной задачи не предусмотрена...и никак не соображу как же это обойти, не наследуясь от комбобокса - уж слишком не хватает виртуальных методов у QCompleter...
|
|
|
Litkevich Yuriy |
12.2.2009, 0:17
Сообщение
#26
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
есть такой пример Iterating Through Completions.
Но я не вникал, годится оно или нет |
|
|
Константин |
12.2.2009, 0:52
Сообщение
#27
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
есть такой пример Iterating Through Completions. Но я не вникал, годится оно или нет не, это совсем не то. в общем, пошуршал сырцами qcompleter.cpp - и вот такая картина:
как видите, используется QString::compare. если бы использовался QRegExp, то можно было бы изъ??нуться, а так - только писать самому... |
|
|
kwisp |
12.2.2009, 9:41
Сообщение
#28
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Нет, дело не в памяти. Я список внутри слота объявил только для форума. А в программе объявление list и result происходит в описании класса. походу editTextChanged(QString) вызывается если addItems вызываешь и у тебя комбо редактируемый. от этого и падение. а может и когда clear() делаешь тоже editTextChanged(QString) вызывается. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:57 |