crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Переключение на стиль "Fusion" вызывает вылет программы, Qt 5.0.1/MinGW 32bit
Majestio
  опции профиля:
сообщение 13.2.2013, 19:46
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Добрейшего времени суток!

Начал постепенно переводить своей проект с Qt4 на Qt5 и наткнулся на непонятные грабли - при переключении на стиль "Fusion" программа завершается с кодом -1073741819. Грешным делом подумал, что где-то в недрах проекта что-то не так. Но вырвал в тестовый проектик один виджет, ответственный за переключение стилей ... и он тоже глючит. При чем изредка работает, но чаще вылетает. Тенденции определить не смог.

Есть вероятность, что я что-то делаю не так - ткните носом, плс.

Код ответственный за переключение стилей таков:
void Widget_Options::SlotStyleChanged(int iIdx)
{
    if (iIdx == 0) QApplication::setStyle(QStyleFactory::create("WindowsXP"));
    if (iIdx == 1) QApplication::setStyle(QStyleFactory::create("Windows"));
    if (iIdx == 2) QApplication::setStyle(QStyleFactory::create("Fusion"));
}


К сообщению прикрепил тестовый проектик, где все это вылетает.
Вобщем, нужна ваша помощь!
Прикрепленные файлы
Прикрепленный файл  Testo.zip ( 2,3 килобайт ) Кол-во скачиваний: 170
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.2.2013, 20:00
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


не вылетает, но и ничего не меняется при выборе

запусти на отладку без точек останова и поймай место
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 13.2.2013, 20:07
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Цитата(Алексей1153 @ 13.2.2013, 20:00) *
не вылетает, но и ничего не меняется при выборе
запусти на отладку без точек останова и поймай место


Странно, у меня меняется. Win и WinXP меняются нормально. А fusion - изредка срабатывает, но чаще просто вылет. Отладку запускать думаю смысла нет - оператор я выловил, это

if (iIdx == 2) QApplication::setStyle(QStyleFactory::create("Fusion"));

... обрамил его qDebug() << "1"; и qDebug() << "2";

А может я все неправильно делаю, если "да", то как правильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.2.2013, 20:12
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


я ж говорю - запусти на отладку без точек останова. Там, где вылетит с ошибкой 0xc0000005 , там собака и порылась. Стек вызовов всё расскажет. Иногда, правда, это не спасает всё же
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 13.2.2013, 20:32
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Цитата(Алексей1153 @ 13.2.2013, 20:12) *
я ж говорю - запусти на отладку без точек останова. Там, где вылетит с ошибкой 0xc0000005 , там собака и порылась. Стек вызовов всё расскажет. Иногда, правда, это не спасает всё же


Скорее всего наступило "иногда" ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 13.2.2013, 21:05
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Есть подозрение, что тема "Fusion" требует прочие плагины, типа поддержки графических форматов ... и возможно дело в том, что в определенных случаях они программой не находятся. Тогда попутный вопрос: можно ли "уговорить" программу, сообщить что она не смогла загрузить из *.dll , может какой обработчик можно переопределить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.2.2013, 22:14
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


так у тебя похоже на рекурсию слота
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 13.2.2013, 22:43
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Нет рекурсии, вставлял отладочную печать - выдает одиночный вызов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Авварон
  опции профиля:
сообщение 13.2.2013, 23:07
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 99
Регистрация: 26.4.2009
Пользователь №: 709

Спасибо сказали: 14 раз(а)




Репутация:   0  


Мне кажется, надо проверять результат QStyleFactory::create - она не может загрузить Фьюжн и возвращает 0. Видимо, в куаппе нет проверки на 0 (О_о?)
Оффтоп: у куаппа есть перегруженный метод setStyle от строки - имени стиля.
Наврал, проверка есть... Странности...

Палец в небо - попробуйте заменить
    connect(ComboStyle,SIGNAL(currentIndexChanged(int)),this,SLOT(SlotStyleChanged(int)));

на

    connect(ComboStyle,SIGNAL(currentIndexChanged(int)),this,SLOT(SlotStyleChanged(int)), Qt::QueuedConnection);



Сообщение отредактировал Авварон - 13.2.2013, 22:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 13.2.2013, 23:10
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Qt::QueuedConnection - не спасает, увы. Все больше кажется, что проблема с загрузкой плагинов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 3:29