• 7022阅读
  • 9回复

QT简单的画线 [复制链接]

上一主题 下一主题
离线ren_10011
 
只看楼主 倒序阅读 楼主  发表于: 2009-05-04
void Mainimpl::paintEvent(QPaintEvent *event)
{QPainter paint(this);
paint.setPen(Qt::red);
paint.drawLine(0,0,50,50);}
如果是直接写代码,是能显示出来的。但是用designer设计了,在添加这段代码,是显示不出来的。请高手们指点。
离线duduqq

只看该作者 1楼 发表于: 2009-05-04
把QPainter paint(this);中的this改为Ui中的要显示到那里的那个控件。
离线ren_10011
只看该作者 2楼 发表于: 2009-05-04
很感谢,刚学QT编程,很多都不懂。我能把代码贴上来你帮我看下吗。参数我不知道怎么设置。#ifndef CLOCK_H
#define CLOCK_H

#include <qvariant.h>
#include <qwidget.h>
#include<qpainter.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class Clock;

class Clock : public QWidget
{
    Q_OBJECT

public:
    Clock( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
    void PaintEvent(QPaintEvent*);
    ~Clock();

};

#endif // CLOCK_H

#include <qlayout.h>
#include <qvariant.h>
#include <qtooltip.h>
#include <qwhatsthis.h>

/*
*  Constructs a Clock which is a child of 'parent', with the
*  name 'name' and widget flags set to 'f'
*/
Clock::Clock( QWidget* parent,  const char* name, WFlags WType_TopLevel )
    : QWidget( parent, name, WType_TopLevel )
{
    if ( !name )
    setName( "Clock" );
    resize( 588, 480 );
    setMaximumSize( QSize( 640, 480 ) );
    setBaseSize( QSize( 640, 480 ) );
    setCaption( tr( "Welcome to my university!" ) );
    setBackgroundOrigin( QWidget::ParentOrigin );
}
void Clock::PaintEvent(QPaintEvent*)
{
      QPainter painter;
      painter.setPen(red);
      painter.drawLine(0,0,50,50);
}

/*  
*  Destroys the object and frees any allocated resources
*/
Clock::~Clock()
{
    // no need to delete child widgets, Qt does it all for us
}

#include"Clock.h"
#include<qapplication.h>
int main(int argc, char *argv[])
{
      QApplication app(argc, argv);
      Clock pt;
      pt.resize(400, 150);
      pt.show();
      return app.exec();
}
离线ren_10011
只看该作者 3楼 发表于: 2009-05-04
但是我想我用qwidget这个创建了一个对象pt,然后那里的THIS指针指向这个对象,也就是在这个控件上画图啊,不明白。
离线ren_10011
只看该作者 4楼 发表于: 2009-05-05
ding xia
离线duduqq

只看该作者 5楼 发表于: 2009-05-05
QPainter painter(this);
离线ren_10011
只看该作者 6楼 发表于: 2009-05-05
QPainter painter(this);
这个不行,我原来就是用的这个,后来楼上的一个说不能这样我就擦了。
离线duduqq

只看该作者 7楼 发表于: 2009-05-05
你重载PaintEvent函数错了,应该是paintEvent(QPaintEvent *)。
离线ren_10011
只看该作者 8楼 发表于: 2009-05-05
非常感谢duduqq ,呵呵。真的很开心。
离线wu_java
只看该作者 9楼 发表于: 2009-07-09
void myDraw::paintEvent(QPaintEvent* event)    
     paint= new QPainter(ui.pushButton001);
     paint->setRenderHint(QPainter::Antialiasing, true);    
     paint->setPen(QPen(Qt::blue, 1, Qt::DotLine));
     paint->drawRect(4,6,10,20);
}
我的这个怎么画不出来?
快速回复
限100 字节
 
上一个 下一个