Название: QDialog + QLayout Ошибка Отправлено: SlimSlot от Август 02, 2011, 12:34 Добрый день!
Есть класс, унаследованный от QDialog В конструкторе создается QGridLayout, который устанавливается this->setLayout(p_GridLayout) Далее вызывается функция Код: QComboBox* l_pComboBox_Field = new QComboBox(); Суть в чем. При определенных действиях добавляется строка в GridLayout в виде HBoxLayout динамически. Сам диалог создается из другого окна QMainWindow Код: Limit* l_pLimit = new Limit(p_User, p_Model); При запуске вылезает ошибка Цитировать --------------------------- Microsoft Visual C++ Runtime Library --------------------------- Runtime Error! This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. Попробовал поотлаживать. Валится где-то на месте, связанным с layout в какой-то структуре, где сам layout как я понимаю не инициализирован и разыменывание приводит к краху. Не могу понять в чем ошибка. Помогите пожалуйста, хоть в какую сторону смотреть. Название: Re: QDialog + QLayout Ошибка Отправлено: GreatSnake от Август 02, 2011, 13:43 Цитировать В конструкторе создается QGridLayout, который устанавливается this->setLayout(p_GridLayout) Ну дык и где ентот конструктор?Название: Re: QDialog + QLayout Ошибка Отправлено: SlimSlot от Август 02, 2011, 13:49 Цитировать В конструкторе создается QGridLayout, который устанавливается this->setLayout(p_GridLayout) Ну дык и где ентот конструктор?Вот же он Код: Limit::Limit(LoginUser* user, QSqlQueryModel* model, QWidget *parent): QDialog(parent) где user - это объект, класс которого унаследован от QObject в CreateUI вызывается моя функция AddLimitLine: Код: QLabel* l_pLable_Information = new QLabel("тратата"); Название: Re: QDialog + QLayout Ошибка Отправлено: GreatSnake от Август 02, 2011, 14:05 где инициализация iCountLimitLines?
Название: Re: QDialog + QLayout Ошибка Отправлено: SlimSlot от Август 02, 2011, 14:32 Вот черт.
Теперь понял почему так произошло. Спасибо огромное!!!! Название: Re: QDialog + QLayout Ошибка Отправлено: SlimSlot от Август 03, 2011, 17:25 В продолжение темы...
Добавление строки фильтра я сделал. Теперь удаление строки фильтра Вот код указанного ранее слота slot_SelectFilterColumn Код: void Limit::slot_SelectFilterColumn(QString ColumnName) Здесь при выборе пустого элемента для фильтрации должна удаляться следующая строка фильтра - функция DeleteLimitLine, в которую передается номер текущей строки фильтра + 1 Сама функция вот Код: void Limit::DeleteLimitLine(int iIndex) Смотрим количество виджетов в этом Layout и удаляем каждый Далее удаляем сам Layout. Удаление проходит нормально. Только проблема в том что после удаления не перестраивается размер диалога. Точнее он перестраивается, но криво. Такое ощущение что в нем есть еще одна как бы невидимая строка - размер как раз подходит. Но строки нет. Но. Если до строки Код: p_GridLayout->setSizeConstraint(QLayout::SetMinimumSize); То диалог нормально перестраивается. Причем это поэтапно выглядит так 1. Удаляются виджеты и Layout 2. Размер формы перестраивается как будто с еще одной строкой, которой нет 3. Показывается сообщение 4. Размер формы перестраивается идеально Подскажите пожалуйста, почему такое может быть? |