Qt App适用于MacOSX,Windows上的访问冲突
发布时间:2020-12-14 05:28:00 所属栏目:Windows 来源:网络整理
导读:所以我偶然发现了一个我无法解决的问题.我正在用C编写一个Qt应用程序,并且已经在MacOSX上进行开发,它运行良好.但是,当我在 Windows中测试代码时,当我关闭或取消我拥有的QDialog子时,我遇到了以下访问冲突: MyApp.exe中0x5ce6b1ea(QtGuid4.dll)的未处理异常
所以我偶然发现了一个我无法解决的问题.我正在用C编写一个Qt应用程序,并且已经在MacOSX上进行开发,它运行良好.但是,当我在
Windows中测试代码时,当我关闭或取消我拥有的QDialog子时,我遇到了以下访问冲突:
MyApp.exe中0x5ce6b1ea(QtGuid4.dll)的未处理异常:0xC0000005:访问冲突读取位置0xfeeefefa. 调试这个,我看到它在很多Qt api调用之后崩溃,最终降到了QWindowSurface_Raster.cpp.这是它崩溃的Qt库代码: #endif { QPoint wOffset = qt_qwidget_data(widget)->wrect.topLeft(); HDC widget_dc = widget->getDC(); QRect wbr = br.translated(-wOffset); BitBlt(widget_dc,wbr.x(),wbr.y(),wbr.width(),wbr.height(),/*CRASH HERE!*/ d->image->hdc,br.x() + offset.x(),br.y() + offset.y(),SRCCOPY); widget->releaseDC(widget_dc); } 最后这是我的代码,我称之为qdialog: void MainWindow::prefDialog() { prefD = new PreferenceDialog(this); prefD->exec(); } /* crashes here,after I hit cancel/ok on dialog and it leaves exec */ PreferenceDialog.h: class PreferenceDialog : public QDialog { Q_OBJECT public: PreferenceDialog(QWidget *parent); ..... PreferenceDialog.c PreferenceDialog::PreferenceDialog(QWidget *parent) : QDialog(parent) { .... connect(okayButton,SIGNAL(released()),this,SLOT(okayClicked())); connect(addKeyButton,SLOT(addClicked())); connect(cancelButton,SLOT(cancelClicked())); .... 我可以向你展示我的PreferenceDialog代码或任何其他代码,但我认为它只是膨胀了. PreferenceDialog除了显示之外没有做太多的事情,我也不会覆盖任何函数,比如exec()等.堆栈跟踪也非常臃肿所以我现在不会发布,它只是在exec()之后调用了一堆Qtguid4.dll完成,(大约10)直到它在QWindowRaster中发生崩溃. 如果需要任何其他信息,请告诉我.我在Qt很新,所以很难搞清楚这一点,任何帮助都将不胜感激,谢谢! 解决方法
我正在调用QDialog :: destroy()关闭窗口而不是QDialog :: close().当Qt完成QDialog :: exec()并导致Windows崩溃时,这会导致空指针异常.将调用更改为close()修复了问题.
感谢HostileFork的建议 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 8 款macOS 分屏应用让你的桌面窗口不再乱糟糟
- Windows – 通过GPO或脚本关闭高对比度模式?
- gitblit在windows10上的安装及服务启动报错处理
- microsoft-office – OpenOffice可以取代MS Office吗?
- remote-desktop – 仅允许RemoteApp,而不允许远程桌面
- windows – mkbundle生成非功能性控制台exe
- windows-phone-7 – 从Visual Studio中将文件添加到WP7独立
- WPF:Window加载的刷新/更新控件
- 我可以在Windows7上使用C#.NET开发Blackberry应用程序吗?
- 如何让Windows认为您的应用程序仍然很忙,尽管它没有响应
推荐文章
站长推荐
热点阅读