-
Notifications
You must be signed in to change notification settings - Fork 188
Description
作者你好,如题。
我使用代理框架(QWKExample_MainWindow)为前提。
1,直接使用一个派生自QDockWidget的dock,程序一切正常。
2,使用一个派生自QDockWidget的dock,但在这个dock的构造函数中使用了WidgetWindowAgent(new setup),发现如下两个问题(都是针对派生自QDockWidget的dock)。
2.1假如我没有自定义标题栏widget,程序运行后,可以将dock拖出来(因为没有自定义标题栏,所以拖出来就托不回去了),这个时候,主框架还是可以拖动的。但如果拖出来不松手再拖回去,程序直接崩溃。
2.2假如我使用了自定义的标题栏(WindowBar),程序运行后,将dock拖出来,这个时候,主框架已经没有相应了(如何点,拖,都不带动的),鼠标也变成了一个不正常的样子。同时拖动感觉不顺滑,迟滞感比较强。然后再将dock拖回去,这个时候就崩溃了。
崩溃点如下:C:\Qt\6.10.1\msvc2022_64\include\QtCore\qscopedpointer.h,文件112行
T *get() const noexcept
{
return d;
}
2.1的崩溃地也是这里,调用堆栈如下:
Qt6Guid.dll!QScopedPointer<QObjectData,QScopedPointerDeleter>::get() 行 112 C++
Qt6Guid.dll!qGetPtrHelper<QScopedPointer<QObjectData,QScopedPointerDeleter> const>(const QScopedPointer<QObjectData,QScopedPointerDeleter> & ptr) 行 137 C++
Qt6Guid.dll!QWindow::d_func() 行 65 C++
Qt6Guid.dll!QWindow::handle() 行 2201 C++
QtTest.exe!QWK::forwardFilteredEvent(QWindow * window, HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam, int64 * result) 行 464 C++
QtTest.exe!QWKHookedWndProc(HWND * hWnd, unsigned int message, unsigned __int64 wParam, int64 lParam) 行 627 C++
[外部代码]
Qt6Cored.dll!QEventDispatcherWin32::processEvents(QFlags flags) 行 502 C++
Qt6Guid.dll!QWindowsGuiEventDispatcher::processEvents(QFlags flags) 行 36 C++
Qt6Cored.dll!QEventLoop::processEvents(QFlags flags) 行 105 C++
Qt6Cored.dll!QEventLoop::exec(QFlags flags) 行 186 C++
Qt6Cored.dll!QCoreApplication::exec() 行 1452 C++
Qt6Guid.dll!QGuiApplication::exec() 行 1974 C++
Qt6Widgetsd.dll!QApplication::exec() 行 2576 C++
QtTest.exe!main(int argc, char * * argv) 行 35 C++
QtTest.exe!qtEntryPoint() 行 45 C++
QtTest.exe!WinMain(HINSTANCE * formal, HINSTANCE * __formal, char * __formal, int __formal) 行 64 C++
谢谢。