Здравствуйте, гость ( Вход | Регистрация )
kwisp | Дата 12.2.2009, 9:41 |
Нет, дело не в памяти. Я список внутри слота объявил только для форума. А в программе объявление list и result происходит в описании класса. походу editTextChanged(QString) вызывается если addItems вызываешь и у тебя комбо редактируемый. от этого и падение. а может и когда clear() делаешь тоже editTextChanged(QString) вызывается. |
|
Константин | Дата 12.2.2009, 0:52 |
есть такой пример Iterating Through Completions. Но я не вникал, годится оно или нет не, это совсем не то. в общем, пошуршал сырцами qcompleter.cpp - и вот такая картина:
как видите, используется QString::compare. если бы использовался QRegExp, то можно было бы изъ??нуться, а так - только писать самому... |
|
Litkevich Yuriy | Дата 12.2.2009, 0:17 |
есть такой пример Iterating Through Completions. Но я не вникал, годится оно или нет |
|
Константин | Дата 12.2.2009, 0:07 |
а по теме - у меня впечатление, что через QCompleter реализация подобной задачи не предусмотрена...и никак не соображу как же это обойти, не наследуясь от комбобокса - уж слишком не хватает виртуальных методов у QCompleter... | |
SABROG | Дата 11.2.2009, 23:31 |
А что дебаггер говорит? | |
Litkevich Yuriy | Дата 11.2.2009, 23:31 |
Я список внутри слота объявил только для форума. продолжай в томже духе, помощь прийдет быстро. ай-ай-ай, Юрий Хех, об этом я не подумал.QStringList - это обёртка над QList<QString>, а QList, как известно, шаренный тип. т.о. проблема никак не в передаче по ссылке... П.С. ко мне лучше на ты, мне так привычнее. |
|
vanvo | Дата 11.2.2009, 23:08 |
Может конечно все это и не нужно... Т.е. нужен, по сути, тот же самый QCompleter, но чтобы вхождение введенной в QComboBox строки искал не только с первого символа элементов списка. | |
Константин | Дата 11.2.2009, 22:56 |
А почему аварийно завершается могу сказать, смотри: Цитата void QComboBox::addItems ( const QStringList & texts ) в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти ай-ай-ай, Юрий QStringList - это обёртка над QList<QString>, а QList, как известно, шаренный тип. т.о. проблема никак не в передаче по ссылке... |
|
vanvo | Дата 11.2.2009, 22:43 |
При наборе букв, содержащихся в list, программа сразу же вылетает. Почему? почему при закоментированной отчистке продолжает работать я не знаю.Если закоментить comboBox->clear();, то программа работает А почему аварийно завершается могу сказать, смотри: Цитата void QComboBox::addItems ( const QStringList & texts ) в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти Нет, дело не в памяти. Я список внутри слота объявил только для форума. А в программе объявление list и result происходит в описании класса. |
|
Litkevich Yuriy | Дата 11.2.2009, 22:00 |
При наборе букв, содержащихся в list, программа сразу же вылетает. Почему? почему при закоментированной отчистке продолжает работать я не знаю.Если закоментить comboBox->clear();, то программа работает А почему аварийно завершается могу сказать, смотри: Цитата void QComboBox::addItems ( const QStringList & texts ) в этой функции принимается ссылка на список, а список у тебя создан как обычная переменная, как только функция завершится, то и удалится эта переменная. Соответственно QComboBox будет обращатся к неправильной области памяти |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 17:07 |