Я пишу на C ++ с OpenSUSE Linux и использую Qt Creator в качестве моей IDE.
У меня есть подкласс QFrame
с именем Interactive
, который связан с другим подклассом QFrame
с именем Window
. В Window::dropEvent
я хочу удалить event->source
, который является Interactive
объектом. Итак, у меня есть такая настройка:
void Window::dropEvent(QDropEvent *event) {
//after identifying MIME type as an Interactive object:
Interactive *temp = (qobject_cast<Interactive*>(event->source()));
temp->deleteLater();
}
Тогда обычно все нормально, пока я не попытаюсь сделать что-нибудь еще в своей программе, и тогда я получу это:
(gdb) bt
0 0xf5df218f in QMutex::lock() () from /space/cp/x86/qt/lib/libQtCore.so.4
1 0xf5f05b27 in QCoreApplication::postEvent(QObject*, QEvent*, int) () from /space/cp/x86/qt/lib/libQtCore.so.4
2 0xf5f05e5c in QCoreApplication::postEvent(QObject*, QEvent*) () from /space/cp/x86/qt/lib/libQtCore.so.4
3 0xf5f15ce7 in QObject::deleteLater() () from /space/cp/x86/qt/lib/libQtCore.so.4
4 0xf62ccb00 in ?? () from /space/cp/x86/qt/lib/libQtGui.so.4
5 0xf62b31d2 in QApplication::x11ClientMessage(QWidget*, _XEvent*, bool) () from /space/cp/x86/qt/lib/libQtGui.so.4
6 0xf62bfd04 in QApplication::x11ProcessEvent(_XEvent*) () from /space/cp/x86/qt/lib/libQtGui.so.4
7 0xf62e834f in ?? () from /space/cp/x86/qt/lib/libQtGui.so.4
8 0xf5f0480a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /space/cp/x86/qt/lib/libQtCore.so.4
9 0xf5f04c52 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /space/cp/x86/qt/lib/libQtCore.so.4
10 0xf5f06f69 in QCoreApplication::exec() () from /space/cp/x86/qt/lib/libQtCore.so.4
11 0xf6238887 in QApplication::exec() () from /space/cp/x86/qt/lib/libQtGui.so.4
12 0x0805d028 in main (argc=138177832, argv=0x83cf3b0) at /home/bbayes/DspGUI/main.cpp:10
Удаленный Interactive
больше не ссылается ни на один мой код. Эта ошибка выглядит полностью внутренней для Qt. Я посмотрел в Интернете, но не смог найти подобный пример или решение. У кого-нибудь есть идеи, как решить эту проблему?