Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: names от Апрель 17, 2010, 18:55



Название: QObject::connect крешит на Windows
Отправлено: names от Апрель 17, 2010, 18:55
Привет Qt гуру

Я стараюсь создать класс, который наследует QComboBox и обработать сигнал currentIndexChanged(int)

Код:
class ComboBox_impl : public QComboBox
{
Q_OBJECT
public:

ComboBox_impl()
{
connect(this, SIGNAL(currentIndexChanged(int)), SLOT(doProcessIndexChanged(int)));
}

virtual ~ComboBox_impl()
{
}

public Q_SLOTS:
void doProcessIndexChanged(int)
{
}
};

Под Мак ОС 10.6.2 работает отлично, а под Windows XP генерит исключение "Access denied" на строчке

Код:
connect(this, SIGNAL(currentIndexChanged(int)), SLOT(doProcessIndexChanged(int)));

Версия Qt на Windows 4.6.2, VS 2008

Жду помощи,
Н.


Название: Re: QObject::connect крешит на Windows
Отправлено: Авварон от Апрель 17, 2010, 19:10
выложи проект, воспроизводящий багу
кстати было бы неплохо вызвать коструктор базового класса, мало ли


Название: Re: QObject::connect крешит на Windows
Отправлено: names от Апрель 18, 2010, 10:57
Вот в том все и дело, что сам проект не могу... Вот простой тестовый проектик с таким классом работает, а рабочий, где этот класс в либе, которую подключает к себе прога не работает  :-\


Название: Re: QObject::connect крешит на Windows
Отправлено: Авварон от Апрель 18, 2010, 11:24
ну в этом коде с виду ошибок нет
что дебаггер показывает?
потоки есть?


Название: Re: QObject::connect крешит на Windows
Отправлено: SABROG от Апрель 18, 2010, 11:31
Скорее всего дело не в connect, а в памяти. Либо стек закончился, либо где-то утечка памяти.


Название: Re: QObject::connect крешит на Windows
Отправлено: Alex Custov от Апрель 18, 2010, 13:34
ты не вызывал родительский конструктор. Возможно, это влияет.

Код
C++ (Qt)
ComboBox_impl() : QComboBox()
{
 
}
 


Название: Re: QObject::connect крешит на Windows
Отправлено: names от Апрель 19, 2010, 09:31
Вот сама еррора:
Unhandled exception at 0x6718c3d6 in minihost.exe: 0xC0000005: Access violation reading location 0x00000010.



Название: Re: QObject::connect крешит на Windows
Отправлено: Amigo_sa от Апрель 19, 2010, 11:10
Под Мак ОС 10.6.2 работает отлично, а под Windows XP генерит исключение "Access denied" на строчке

Код:
connect(this, SIGNAL(currentIndexChanged(int)), SLOT(doProcessIndexChanged(int)));

Версия Qt на Windows 4.6.2, VS 2008

Жду помощи,
Н.
наверное, из-за того, что не вызван базовый конструктор, this неопределен... но я неуверен, надо проверить.


Название: Re: QObject::connect крешит на Windows
Отправлено: zenden от Апрель 19, 2010, 13:21
Вот сама еррора:
Unhandled exception at 0x6718c3d6 in minihost.exe: 0xC0000005: Access violation reading location 0x00000010.




банальное обращение к нулевому указателю. Уверен, что это ошибка в вашем коде, а не qt


Название: Re: QObject::connect крешит на Windows
Отправлено: johnny от Апрель 20, 2010, 13:16
ты не вызывал родительский конструктор. Возможно, это влияет.

Родительский конструктор по умолчанию будет вызван автоматом


Название: Re: QObject::connect крешит на Windows
Отправлено: names от Май 13, 2010, 13:18
Либы поменял на те, которые на сайте нокии лежат и все заработало. У меня перед этим были собственноручно собранные  ???


Название: Re: QObject::connect крешит на Windows
Отправлено: niXman от Май 13, 2010, 13:26
не в тему конечно, но позвольте поинтересоваться. в чем смысл такой записи:
Цитировать
public Q_SLOTS:
?
спасибо.


Название: Re: QObject::connect крешит на Windows
Отправлено: pastor от Май 13, 2010, 16:58
не в тему конечно, но позвольте поинтересоваться. в чем смысл такой записи:
Цитировать
public Q_SLOTS:
?
спасибо.


Цитировать
Q_SLOTS
Use this macro to replace the slots keyword in class declarations, when you want to use Qt Signals and Slots with a 3rd party signal/slot mechanism.
The macro is normally used when no_keywords is specified with the CONFIG variable in the .pro file, but it can be used even when no_keywords is not specified.