QT例子段错误

gohome520 2011-05-30 08:42:33
最近刚开始学习QT,想先把官网例子程序(http://doc.qt.nokia.com/4.7/gettingstartedqt.html)执行一遍。

在Ubuntu下,碰到了一些代码上问题,通过google也都解决了,最后也能正常跑起来了。
今天想在Windows下再做一遍,结果,但是在点击quit按钮的时候程序异常退出了,简单调试了一下,说是段错误。
但我不明白,这个段错误是怎么产生的? 又该如何解决?
请高手指点。


#include <QtGui>

int main(int argc, char **argv)
{
QApplication app(argc, argv);

QTextEdit textEdit;
QPushButton quitButton("Quit");

QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));

QVBoxLayout layout;
layout.addWidget(&textEdit);
layout.addWidget(&quitButton);

QWidget window;
window.setLayout(&layout);

window.show();

return app.exec();
}



调试信息:
调试开始
HEAP[example.exe]:
Invalid address specified to RtlFreeHeap( 002F0000, 0022FE20 )

我的操作系统是Windows 7
...全文
205 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gohome520 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dbzhang800 的回复:]

看最后一个例子:

http://blog.csdn.net/dbzhang800/archive/2011/04/03/6300025.aspx
[/Quote]

谢谢,看了这篇文章,知道问题的原因和修改方法。

导致这个问题的根本原因是因为QT中引入了父子关系。
在析构父对象的时候,会主动去析构所属的所有子对象。但这种情况,隐性地要求该子对象必须是new出来的。

但我还是有点觉得怪怪的,呵呵。

donwmufromdying 2011-05-31
  • 打赏
  • 举报
回复
我把你的例子改了一下:
#include <QtGui>

int main(int argc, char **argv)
{
QApplication app(argc, argv);

QWidget window;
QVBoxLayout *layout = new QVboxLayout(&window);
QTextEdit *textEdit = new QTextEdit(&window);
QPushButton *quitButton = new QPushButton("Quit", &window);
window.setLayout(layout);
layout.addWidget(textEdit);
layout.addWidget(quitButton);

QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));

window.show();

return app.exec();
}
dbzhang800 2011-05-30
  • 打赏
  • 举报
回复
看最后一个例子:

http://blog.csdn.net/dbzhang800/archive/2011/04/03/6300025.aspx

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧