Не переопределяется QIODevice::isOpen(), При использовании для Phonon |
Здравствуйте, гость ( Вход | Регистрация )
Не переопределяется QIODevice::isOpen(), При использовании для Phonon |
kerdster |
7.7.2011, 13:17
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 1.2.2009 Пользователь №: 520 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день.
Проблема состоит в следующем - необходимо сделать производный класс от QIODevice для использования его в Phonon. Всё бы хорошо, но столкнулся со странной проблемой - не удаётся переопределить в производном классе метод isOpen(). Объявление:
Определение:
Пример кода:
Там, где срабатывает ASSERT моя функция НЕ вызывается, в первом случае вывод в дебаг есть, а во втором нет. Что за фигня такая странная? Исходники проекта прикрепил.
Прикрепленные файлы
|
|
|
RazrFalcon |
7.7.2011, 15:48
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Не совсем понял в чем проблема, но у меня не падает.
Лог: Раскрывающийся текст
Сообщение отредактировал RazrFalcon - 7.7.2011, 15:51 |
|
|
kerdster |
7.7.2011, 21:14
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 1.2.2009 Пользователь №: 520 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не совсем понял в чем проблема, но у меня не падает. Думал проблема действительно в каком-то баге, но на другой машине проблема осталась та же:
Смотрел в код, указанный в сообщении ACCERT, и там совершенно честно:
Что очень странно, ведь у меня она возвращает true. Я вот не могу понять, может с переопределением в наследовании накосячил? Собиралось и запускалось всё добро на Qt 4.6.3/Fedora 13 и Qt 4.7.2/Fedora 14, обе 32х битные. З.Ы. - У вас почему-то нет вывода в Debug второй раз сообщения "SRC: is Open", хотя он должен быть (см. в ошибке: /phonon/iodevicestream.cpp, line 43). |
|
|
RazrFalcon |
7.7.2011, 21:25
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
У меня х32 Arch
В остальном: без понятия, так как не могу повторить багу. |
|
|
kerdster |
8.7.2011, 9:29
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 1.2.2009 Пользователь №: 520 Спасибо сказали: 0 раз(а) Репутация: 0 |
Уф, разобрался в чём дело.
Проглядел что в документации функция isOpen() не виртуальная в классе QIODevice, следовательно при передаче в phonon вызывалась функция базового класса. В документации написано: Цитата Returns true if the device is open; otherwise returns false. A device is open if it can be read from and/or written to. By default, this function returns false if openMode() returns NotOpen. Следовательно добавил в свой класс просто:
И вуаля! Спасибо за внимание и желание помочь)) |
|
|
Текстовая версия | Сейчас: 28.1.2025, 17:08 |