Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Февраль 13, 2011, 11:52



Название: Необработанное исключение
Отправлено: 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




Название: Re: Необработанное исключение
Отправлено: BRE от Февраль 13, 2011, 11:58
Это
Код
C++ (Qt)
QString * radius;
 
описание указателя на строку. В таком виде этот указатель не инициализирован, не говоря о том, что сам объект QString не создан.

Ты этот указатель пытаешься использовать. Что ты хотел еще получить?  ;)


Название: Re: Необработанное исключение
Отправлено: ruzik от Февраль 13, 2011, 12:10
Блин, я немножко не то вписал
В конструкторе
Код:
	radius, padding1 , padding2, borderWidth , borderColor = new QString;
*radius="5";
*padding1 = "2";
*padding2 = "2";
* borderWidth = "1";
* borderColor = "groove gray";
То есть они инициализированнны


Название: Re: Необработанное исключение
Отправлено: Fat-Zer от Февраль 13, 2011, 12:25
Код:
	radius, padding1 , padding2, borderWidth , borderColor = new QString;
это не прямо так написано?
и лучше делоть так:
Код
C++ (Qt)
radius = new QString("5");
padding1 = new QString("2");
// итд
 


Название: Re: Необработанное исключение
Отправлено: BRE от Февраль 13, 2011, 12:28
А нужны ли здесь вообще указатели?

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

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



Название: Re: Необработанное исключение
Отправлено: ruzik от Февраль 13, 2011, 14:11
Огромное спасибо за помощь!