QPainter在子窗口上画线
基类QWidget,上面放了一个Label控件(放其他控件也可以),要用QPainter在上面画线,应该如何写呢?
这是我写的widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QTimer>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
QTimer *timer = new QTimer(this); //新建定时器
QObject::connect(timer,SIGNAL(timeout()),this,SLOT(flushbuff())); //关联定时器计满信号和相应的槽函数
timer->start(500);
}
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(ui->label); //
painter.drawLine(0,0,100,100);
}
void Widget::flushbuff()
{
ui->label->repaint();
}
各位大牛帮忙啊。。。
[解决办法]
2个方法:
1:从QWidget派生出一个类重写paintEvent,在里面画图。
2:给这个控件安装事件监视器,在QEvent::paint的时候画图。
2个办法其实是一回事,就是多写一个类的区别。
[解决办法]
楼主不是可以画一条线了么?
如果需要手动画,可以重载mousePressEvent和mouseMoveEvent.
[解决办法]
使用installEventFilter
在widget的外部进行绘制带有坐标轴的图像: http://www.cppblog.com/biao/archive/2009/10/31/99896.html