求助,编译qt可以通过,但是运行时有错误!

xiaobei88 2011-02-21 08:16:42
背景介绍:
1.定义了一个主窗口类MainWindow,还定义了另一个划线的类DrawLine。
2.DrawLine类的头文件包含在mainWindow.h文件中。
3.在MainWindow类中重写了mousePressEvent,mouseReleaseEvnt和mouseMoveEvent这三个函数,这三个函数用到了类DrawLine类中的成员函数。

问题如下:
1.编译程序没有问题,也可以运行,主窗口会出现,但是,当点击鼠标开始划线的时候,
程序就异常中断了。
2.我现在也不太清楚问题是不是出在三个重写的函数上,还是程序的设计思路本身就有错误,或者
还有其他的什么错误没有考虑到。

请求高手指点迷津~~
...全文
184 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobei88 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangglemu 的回复:]

没必要单独弄一个DrawLine类
划线的步骤是:
主窗口类的变量bool isDown=false; QPoint p;
1,鼠标左键按下时,isDown=true; p=QCursor::pos()
2,鼠标移动时,如果isDown为true,画线,起点为p,终点为QPoint p2 = QCursor::pos(),
画完后,令p=p2,保存鼠标新的位置
3,释放鼠标左键时……
[/Quote]


谢谢 yangglemu ~

如果只画一条线,这个方法很完美。
我现在要实现的功能,不只是画一条直线,还要画曲线,同时测量直线、曲线的长度。
一楼没有问的太详细,具体的方法是这样的:
1.类mainWindow提供一个窗口,和一些按钮,点击某些按钮会进入开始划线的状态。
2.点击按钮时会调用类drawMeasure的成员函数,并且传递一个“划线方式的字符串“给该函数,根据这个字符串初始化相应的划线的对象,将划线的对象放入QList<AbstractDraw*>。
3.类AbstractDraw是划线类drawLine,drawCurve的抽象基类。
4.类AbstractDraw定义了几个虚函数,包括划线函数,测量计量长度的函数,同时还有,mousePressEvent,mouseReleaseEvnt和mouseMoveEvent这三个函数。
5.类drawLine,DrawCurve分别相应的实现了这些函数。
6.最后在MainWindow类中也定义了mousePressEvent,mouseReleaseEvnt和mouseMoveEvent这三个函数。

请问这样做合理吗?
  • 打赏
  • 举报
回复
没必要单独弄一个DrawLine类
划线的步骤是:
主窗口类的变量bool isDown=false; QPoint p;
1,鼠标左键按下时,isDown=true; p=QCursor::pos()
2,鼠标移动时,如果isDown为true,画线,起点为p,终点为QPoint p2 = QCursor::pos(),
画完后,令p=p2,保存鼠标新的位置
3,释放鼠标左键时,令isDown=true;
yanchong 2011-02-21
  • 打赏
  • 举报
回复
重载paintevent
xiaobei88 2011-02-21
  • 打赏
  • 举报
回复
程序现在可以跑起来了,但是在主窗口上画不了线,这是什么原因呢??
在水一方 2011-02-21
  • 打赏
  • 举报
回复
没问题,应该是你写程序的问题,你是不是定义了局部变量,但是在外部你进行了访问呢?

16,229

社区成员

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

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