• 5855阅读
  • 3回复

[提问]QT5根据可变数据画折线问题 [复制链接]

上一主题 下一主题
离线wang12zhe
 

只看楼主 倒序阅读 楼主  发表于: 2016-04-12
— 本帖被 XChinux 从 Qt 作品展 移动到本区(2016-04-12) —
初学QT,在画线这里遇到问题,还请大神帮忙

#include "widget.h"#include "ui_widget.h"#include "debug.h"#include <QLine>#include <QLineF>void Str2Array(QByteArray Array,QString SendStr);
Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    x=0;                      //在Widget类里定义的公共成员x,y,x1,y1    y=0;    x1=100;    y1=60;}
Widget::~Widget(){    delete ui;}
void Widget::on_Clear_clicked(){
   IDE_TRACE_STR("Change");
   x=x1;   y=y1;   x1 +=20;   y1 +=30;   update();}
void Widget::paintEvent(QPaintEvent *event)    //重写paintEvent函数{  QPainter Paint(this);  IDE_TRACE_STR("printer");  Paint.setPen(Qt::red);  Paint.drawLine(x,y,x1,y1); //根据x,y,x1,y1 画直线}
我想实现的是运行之后,单击一个按钮就改变x,y,x1,y1的值,然后执行update();  重新画直线,但是我测试发现,刚启动的时候能画一条直线,当按下按钮后就不显示任何直线了,为什么会这样
离线realfan

只看该作者 1楼 发表于: 2016-04-12
试了一下,没问题啊,附件是按你的代码创建的工程。但你这个只是画最后一段线,因为重绘时,前面的会擦除。如果想保留每一段,要在paintEvent中,重画之前的每一段
untitled0.zip (3 K) 下载次数:3
离线robinsonsir

只看该作者 2楼 发表于: 2016-04-12
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QPainter>
  5. namespace Ui {
  6. class Widget;
  7. }
  8. class Widget : public QWidget
  9. {
  10.     Q_OBJECT
  11. public:
  12.     explicit Widget(QWidget *parent = 0);
  13.     ~Widget();
  14. protected:
  15.     void paintEvent(QPaintEvent *event);
  16. private slots:
  17.     void on_Clear_clicked();
  18. private:
  19.     Ui::Widget *ui;
  20.     int x,y,x1,y1;
  21. };
  22. #endif // WIDGET_H

吐槽一句,发布的代码能不能清晰点哦。。。
离线toby520

只看该作者 3楼 发表于: 2016-04-12
可以参考 我写的 动态绘制折线的代码 https://github.com/toby20130333/DDBrokenLine
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个