LINUX.ORG.RU

Qt sigsegv

 , ,


0

1

Есть приложение на qt, вот основной класс: h, cpp.

Крашится с SIGSEGV на

window->setWindowFlags
а именно, на
callq  0x4053c2 <operator|(Qt::WindowType, Qt::WindowType)>
При этом если закомментировать строчки
is_msg_showing = false;
msg_pull = new QQueue<QString>;
то всё работает. Если же закомментировать одну из них, крашится уже в другом месте, тоже на call-е. Помогите определить проблему.


у меня твой код отработал

Stil ★★★★★
()
Ответ на: комментарий от Stil

Ему кстати нафиг не нужно так костылить.

Достаточно добавить строки

QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");

в main.cpp

И просто заюзать

QSettings settings;
settings.setValue("Joker", QCoreApplication::applicationFilePath())

При этом хоть кросс-платформенность сохранится.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Ему кстати нафиг не нужно так костылить.

я в курсе :)

вопросы про путь

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Windows\CurrentVersion\Run

и за каким хреном может понадобится хранение в настройках пути до собственного экзешника оставим при себе :)

Stil ★★★★★
()

Все компилится и работает.

Несколько мелких замечаний:

Вот тут «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run» Ты забыл заэкранировать \\

Вот это QCoreApplication::applicationFilePath().replace('/','\\') делается через QDir::toNativeSeparators()

Если сделать hide_timer = new QTimer( this ), то в деструкторе ~Joker не надо будет явно вызывать деструктор hide_timer.

У QLabel::setText - слот. Чтобы явно не вызывать всякие qobject_cast и т.д. можно было связать сигнал, например, showMessage(const QString &) и label::setText, а потом просто вызывать сигнал. Ну и вообще, лазить из другого класса (Joker) и напрямую дергать поля класса gui - нехороший тон. Вот это: QGraphicsDropShadowEffect у тебя должно быть описано внутри класса gui.

У тебя не удаляется msg_pool )

grondek
()
Ответ на: комментарий от Stil

и за каким хреном может понадобится хранение в настройках пути до собственного экзешника оставим при себе :)

В винде так автозапуск работает.

devpony
() автор топика
Ответ на: комментарий от x0r

EXL, Stil

Linux devnull 3.15.10-1-MANJARO #1 SMP PREEMPT Thu Aug 14 10:21:38 UTC 2014 x86_64 GNU/Linux
Используются внутренние спецификации.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.1/lto-wrapper
Целевая архитектура: x86_64-unknown-linux-gnu
Параметры конфигурации: /build/gcc-multilib/src/gcc-4.9.1/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-cloog-backend=isl --disable-isl-version-check --disable-cloog-version-check --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-multilib --disable-werror --enable-checking=release
Модель многопоточности: posix
gcc версия 4.9.1 (GCC)

devpony
() автор топика
Ответ на: комментарий от EXL

После очистки работает, спасибо. Не знал про такую функцию QtCreator-а.

devpony
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.