我有一个问题,我刚刚想出该怎么做,所以也许你可以帮助我。
我正在开发一个连接到数据库、显示值并允许用户更新/插入值的应用程序。
我有一个QTabView
,其中一个选项卡中有四个QTableWidget
。在这个表里面有时(取决于数据库的值)QComboBox
选择一些预定义的值。QComboBox::selectedIndexChanged(int)
我用 a捕获QSignalMapper
并slot
连接到QSignalMapper
以提供一些信息它是什么表以及更改了哪些设置。我不时创建新的 SettingsMapper(并在此之前将其删除)以重置“过时的”映射器组合框连接。
所以问题是,当我更改组合框中的索引时,插槽被调用,我可以调试到信号/插槽连接开关所在的 moc_*.cpp,但之后我得到access violation on address 0xC0000005
了 dll 的内部。
这里是调用堆栈:
QtCored4.dll!6721af70()
[Frames below may be incorrect and/or missing, no symbols loaded for QtCored4.dll]
QtCored4.dll!67219fe5()
QtCored4.dll!67218f14()
QtCored4.dll!67218e48()
QtCored4.dll!6721903d()
QtCored4.dll!6720f874()
QtCored4.dll!6702429b()
QtCored4.dll!670316f3()
QtGuid4.dll!655b93f1()
QtGuid4.dll!650f99d0()
user32.dll!7e41885a()
user32.dll!7e41882a()
user32.dll!7e42b326()
msctf.dll!7472467f()
user32.dll!7e43e1ad()
user32.dll!7e43e18a()
QtCored4.dll!67234b9c()
user32.dll!7e42b372()
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e4189cd()
user32.dll!7e418a10()
QtCored4.dll!672359b6()
ntdll.dll!7c90cfdc()
ntdll.dll!7c958e0d()
ntdll.dll!7c95932a()
ntdll.dll!7c90cfdc()
ntdll.dll!7c9594ca()
ntdll.dll!7c919ca7()
ntdll.dll!7c918f01()
ntdll.dll!7c91925d()
ntdll.dll!7c918f01()
ntdll.dll!7c9101bb()
ntdll.dll!7c9192ef()
ntdll.dll!7c918f01()
ntdll.dll!7c9101bb()
user32.dll!7e4277b0()
user32.dll!7e4277f7()
ntdll.dll!7c90da0c()
kernel32.dll!7c8024c7()
msctf.dll!74725951()
msctf.dll!74725956()
user32.dll!7e418a80()
user32.dll!7e418734()
user32.dll!7e418816()
ntdll.dll!7c96c6a7()
QtCored4.dll!6723c8f6()
datProgram.exe!__tmainCRTStartup() Line 578 + 0x35 bytes C
datProgram.exe.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!7c817067()
`
让我感到好奇的是,在另一个选项卡中QTableWidget
具有与上述相同的方法,但问题不会在那里发生。在发布版本(Ctrl+F5)中运行时,问题似乎也消失了......ò.Ó
有什么建议吗?