Russian Qt Forum
Апрель 16, 2024, 23:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Необработанное исключение  (Прочитано 7817 раз)
ruzik
Гость
« : Февраль 13, 2011, 11:52 »

Здравствуйте, не подскажите где я сделал неправильно, и почему возникает ошибка "Необработанное исключение"
Вот функция в которой выскакивает
Код:
this->setStyleSheet("QLineEdit { border-radius:" + *radius + ";"
+ "padding: " + *padding1 + "px " + *padding2 + "px; border: "
+ *borderWidth + "px " + *borderColor+"}");
В объявлениях
Код:
...
private:
QString * radius;
QString * padding1;
QString * padding2;
QString * borderWidth;
QString * borderColor;
        * borderColor = "groove gray";
initialize();
...
В конструкторе
Код:
radius, padding1 , padding2, borderWidth , borderColor = new QString;
*radius="5";
*padding1 = "2";
*padding2 = "2";
* borderWidth = "1";
* borderColor = "groove gray";
А вот функция, в которой и происходит ошибка
Код:
void RizekLineEdit::initialize()
{
this->setStyleSheet("QLineEdit { border-radius:" + *radius + ";"
+ "padding: " + *padding1 + "px " + *padding2 + "px; border: "
+ *borderWidth + "px " + *borderColor+"}");
}
Точно ошибка читается так: Необработанное исключение в "0x670ca634 (QtCored4.dll)" в "MyBr.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcdcd". и выскакивает в qstring.cpp


« Последнее редактирование: Февраль 13, 2011, 12:10 от ruzik » Записан
BRE
Гость
« Ответ #1 : Февраль 13, 2011, 11:58 »

Это
Код
C++ (Qt)
QString * radius;
 
описание указателя на строку. В таком виде этот указатель не инициализирован, не говоря о том, что сам объект QString не создан.

Ты этот указатель пытаешься использовать. Что ты хотел еще получить?  Подмигивающий
Записан
ruzik
Гость
« Ответ #2 : Февраль 13, 2011, 12:10 »

Блин, я немножко не то вписал
В конструкторе
Код:
radius, padding1 , padding2, borderWidth , borderColor = new QString;
*radius="5";
*padding1 = "2";
*padding2 = "2";
* borderWidth = "1";
* borderColor = "groove gray";
То есть они инициализированнны
Записан
Fat-Zer
Гость
« Ответ #3 : Февраль 13, 2011, 12:25 »

Код:
radius, padding1 , padding2, borderWidth , borderColor = new QString;
это не прямо так написано?
и лучше делоть так:
Код
C++ (Qt)
radius = new QString("5");
padding1 = new QString("2");
// итд
 
Записан
BRE
Гость
« Ответ #4 : Февраль 13, 2011, 12:28 »

А нужны ли здесь вообще указатели?

это не прямо так написано?
Скорее всего прямо так, отсюда и "падение" программы.

2 ruzik. Эта конструкция работает не совсем так как ты это ожидаешь, инициализируется только последний указатель borderColor, все остальные остаются не тронутыми.

« Последнее редактирование: Февраль 13, 2011, 12:51 от BRE » Записан
ruzik
Гость
« Ответ #5 : Февраль 13, 2011, 14:11 »

Огромное спасибо за помощь!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 20.