• 7488阅读
  • 2回复

求教:如何在Graphics view 框架下画出圆弧 [复制链接]

上一主题 下一主题
离线za21112
 

只看楼主 倒序阅读 楼主  发表于: 2011-01-17
— 本帖被 XChinux 执行加亮操作(2011-01-17) —
刚学QT,不知道怎么才能在Graphics view 框架下画出圆弧  
这是不在Graphics view 框架下画的圆弧,代码如下,
  
  .CPP的程序
#include "painter01.h"
#include <QPainter>//绘图类QPainter头文件
#include <QDebug>
painter01::painter01(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
resize(600,500);
pix=QPixmap(400,400);
pix.fill(Qt::white);
}
painter01::~painter01()
{
}
void painter01::paintEvent(QPaintEvent *)
{
QPainter painter(this);

//x = lastPoint.x();
//y = lastPoint.y();
//w = endPoint.x() - x;
//h = endPoint.y() - y;
painter.drawArc(x,y,w,h,480,1920);
}
void painter01::mousePressEvent(QMouseEvent *event)
{
if (event->button()==Qt::LeftButton)

  x = event->x();
     y = event->y();

}
void painter01::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons()==Qt::LeftButton) //鼠标左键按下的同时移动鼠标
{
  w = event->x() - x;
  h = event->y() - y;
  update();
}
}

可怎么才能在框架下画呢,view item scene这3者的关系老是搞不清楚。
跪求高人指点迷津。。


离线XChinux

只看该作者 1楼 发表于: 2011-01-17
你这样理解,scene就是事实存在的场景,item是在场景中存在的物,view则是人主观查看场景的不同角度等等。

是画弧线?可是画扇形?你可以看看QGraphicsEllipseItem可行否?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线za21112

只看该作者 2楼 发表于: 2011-01-18
回 1楼(XChinux) 的帖子
首先,谢谢你的回复。
按照你的说法,我再看了下书,早上再编了一下,能出来个静态的。以下是静态的矩形
    QGraphicsRectItem* item = new QGraphicsRectItem(0,0,100,100);
    item->setPen( QPen(QColor(255,0,0)) );
    
    QGraphicsScene* scene = new QGraphicsScene;
    scene->addItem( item );
    ui.graphicsView->setScene( scene );

我是直接在test.ui里,也就是可视化的那个界面里直接添加一个
graphicsView
那又怎么才能利用 mouseMoveEvent编写个能用鼠标拖出来的矩形,碰到这个,又晕了。


这是我想动态画矩形的程序

    x = firstPoint.x();
    y = firstPoint.y();
    w = endPoint.x() - x;
    h = endPoint.y() - y;
    QGraphicsRectItem* item = new QGraphicsRectItem(x,y,w,h);
    item->setPen( QPen(QColor(255,0,0)) );
    
    QGraphicsScene* scene = new QGraphicsScene;
    scene->addItem( item );
    ui.graphicsView->setScene( scene );


    //QGraphicsView *view =new QGraphicsView(scene);
    //view->resize(640,480);
    //view->show();

    //item->setPos( 100,100 );
    //item->setZValue( 0.0 );
    

}

test1::~test1()
{

}

void test1::mousePressEvent(QMouseEvent *event)
{
    if (event->button()==Qt::LeftButton)

        firstPoint=event->pos();

}

void test1::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()==Qt::LeftButton) //鼠标左键按下的同时移动鼠标
    {
        endPoint=event->pos();
        update();

    }
}


使劲点,就是不出来。。
[ 此帖被za21112在2011-01-18 08:45重新编辑 ]
快速回复
限100 字节
 
上一个 下一个