QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1422|回复: 7

请教关于Qt程序中画图的一个问题!请高手指点,多谢!

[复制链接]
发表于 2005-6-8 15:27:38 | 显示全部楼层 |阅读模式
对下面这个程序编译运行时,怎么是空白一片呀?为何看不到画的图形呀?请指点,多谢!
main.cpp
//-------------------------------------------------------------------------
#include <qapplication.h>
#include "testpainter.h"

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

TestPainter testPainter ;

app.setMainWidget( &testPainter );
testPainter.show();
testPainter.draw();
testPainter.drawPie();
testPainter.drawCubicBezier();

testPainter.show();
return app.exec();
}

testpainter.h:
//-------------------------------------------------------------------------
#ifndef TESTPAINTER_H
#define TESTPAINTER_H

#include <qwidget.h>

class TestPainter : public QWidget
{
public:
TestPainter( QWidget* parent=0, const char* name=0 );
~TestPainter();
void draw();
void drawPie();
void drawCubicBezier();
};
#endif


testpainter.cpp:
//-------------------------------------------------------------------------
#include <qpainter.h>

#include "testpainter.h"

TestPainter::TestPainter( QWidget* parent, const char* name)
:QWidget(parent, name )
{
}

TestPainter::~TestPainter()
{
}

void TestPainter::draw()
{
QPainter painter (this );
painter.setPen( QPen( black, 8, DashDotLine) );
painter.setBrush( QBrush( red, Dense6Pattern) );
painter.drawEllipse( 20, 20, 100, 60 );
}

void TestPainter::drawPie( )
{
QPainter painter ( this );
painter.setPen( QPen( black, 5, SolidLine) );
painter.setBrush( QBrush( red, Dense1Pattern) );
painter.drawPie( 160, 20, 100, 60, 60 * 16, 270 * 16 );
}

void TestPainter::drawCubicBezier()
{
QPainter painter( this );
QPointArray points( 4 );
points[0] = QPoint( 280, 80 );
points[1] = QPoint( 320, 10 );
points[2] = QPoint( 360, 10 );
points[3] = QPoint( 400, 80 );
painter.setPen( QPen(blue, 2, SolidLine) );
painter.drawCubicBezier( points );
}
发表于 2005-6-8 17:18:07 | 显示全部楼层
你的其它部件档住了
回复

使用道具 举报

发表于 2005-6-8 17:20:23 | 显示全部楼层
还有一个问题就是你的代码,好难看,不美观!我是直言直语的,请不要见怪
回复

使用道具 举报

发表于 2005-6-8 17:21:52 | 显示全部楼层
paintevent()函数呢!不见了的?
回复

使用道具 举报

发表于 2005-6-8 17:24:25 | 显示全部楼层
我想问你一个问题:我现在不理你的结果是什么,你的程序能成功编译吗?
回复

使用道具 举报

发表于 2005-6-8 17:27:51 | 显示全部楼层
你是用QT的吗?QT画图的主驱动程序是paintevent()函数,你没有paintevent()是不能的!paintevent()是虚函数.你可以重定义paintevent()
回复

使用道具 举报

 楼主| 发表于 2005-6-8 17:56:03 | 显示全部楼层
我的程序能编译成功、生成可执行文件呀,但没有画图的结果,也没有其它的什么部件盖住它呀。Qt中的画图必须在paintevent()函数里才能用吗?但paintevent()函数是自动调用的呀。我现在想做一个滑块,根据不同的参数来自己调用一个画图函数,把滑块画出来,所以我不能用paintevent()函数吧!能用其它的什么方法呢?请指点,谢谢!
这个程序还是我下载的,你把三个文件分别保存在三个main.cpp TestPainter.h TestPainter.cpp文件里,然后编译、运行就可以了,但出现不了结果。
回复

使用道具 举报

 楼主| 发表于 2005-6-8 17:59:38 | 显示全部楼层
我是用Qt,在Qt下面做,现在想做一个根据鼠标的移动,滑块上面的日期动态改变,所以才想到用一个函数画日期,然后根据鼠标移动来不停的调用画图函数来画。不知有没有其它的方法,请高手指点,thanks!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 21:53 , Processed in 0.047116 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表