我使用OpenSUSE Linux以C++進行編碼,並使用Qt Creator作爲IDE。在dropEvent中刪除QFrame子類時內部QMutex :: lock發生崩潰
我有一個名爲Interactive
的QFrame
子類,該子類屬於另一個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內部。我環顧四周,但找不到類似的例子或解決方案。有沒有人有任何想法如何解決這個問題?