Название: очистка QComboBox Отправлено: mokynis от Февраль 02, 2010, 07:55 Qt 4.3.2
имеется форма, на ней несколько ComboBox'ов, которые заполняются при открытии формы из MySQL-таблиц абсолютно одинаково: Цитировать tmpstr="SELECT * FROM obtype ORDER BY tnam"; qry->exec(tmpstr); while(qry->next()) { vtype<<qry->value(0).toInt(); ui->CBType->addItem(qry->value(1).toString()); } tmpstr="SELECT * FROM kabs ORDER BY knam"; qry->exec(tmpstr); while(qry->next()) { vkab<<qry->value(0).toInt(); ui->CBKab->addItem(qry->value(1).toString()); } время от времени содержимое исходных таблиц меняется и надо перезаполнять ComboBox'ы. Опять одинаково-сначала они очищаются, потом как при запуске формы. Так вот: все очищаются нормально, а при попытке очистить CBKab вылазит сообщение Цитировать ASSERT failure in QVector<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qvector.h, line 319 и программа закрывается. При этом перед очисткой проверяю- qDebug()<<"CBKab: "<<ui->CBKab->count(); выдает, что Combo не пустой (да это и так видно). Название: Re: очистка QComboBox Отправлено: mokynis от Февраль 02, 2010, 07:57 Извиняюсь-вопрос то не задал: из-за чего такое может происходить? И как с ним бороться?
Название: Re: очистка QComboBox Отправлено: voronElf от Февраль 02, 2010, 08:31 у тебя комбобоксы сигналами не связаны ? (насчет изменения текущего выделения и чего-нить в этом стиле). Проверь, чтобы при очистке не вызывались слоты, которые будут обращаться к уже пустым данным. Я частенько на такое попадаюсь при сложном интерфейсе.
PS: я так понял vtype и klab это векторы, в которых лежать id-шники таблиц. Почему бы не хранить эти данные в комбобоксе как Qt::UserRole (избавит от синхронизации векторов и комбобоксов) ? Название: Re: очистка QComboBox Отправлено: mokynis от Февраль 02, 2010, 08:56 СПАСИБО! Точно, CBKab упоминался еще в одном слоте-это его и губило. А можно чуть поподробнее про то, как занести данные в UserRole? А то сейчас одним глазом глянул в Assistant, а там только получение значения из UserRole увидел.
Название: Re: очистка QComboBox Отправлено: Akaiten от Февраль 02, 2010, 09:42 А можно чуть поподробнее про то, как занести данные в UserRole? См. последний параметр метода addItem(): Код
|