QT基础(五)----QPainter高级功能

本文探讨了在QT中使用QPainter进行高级图形绘制时遇到的问题,包括如何将场景正确地布局在窗口中以完整显示图像,以及如何处理窗口变化时的图像失真。提出了两种解决方案:一是通过设置窗口布局来添加场景;二是通过重写虚函数来响应窗口尺寸变化,以保持图像比例。
摘要由CSDN通过智能技术生成

一 场景和窗口


头文件MyWidget.h


#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include<QGraphicsScene>    //场景
#include<QGraphicsLineItem>     //线的场景
#include<QGraphicsPixmapItem>   //图像的场景

#include<QGraphicsView>         //将场景表现出来
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent = 0);

    QGraphicsScene *_scene;      //data model
    QGraphicsView *_view;       //show data model

signals:

public slots:
};

#endif // MYWIDGET_H

源文件 MyWidget.cpp


#include "MyWidget.h"
#include<QApplication>


MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
    _view = new QGraphicsView(this);    //将场景在主窗口界面画出来

    _view->setScene(_scene = new QGraphicsScene);   //将场景设置在该窗口中

    _scene->addItem(new QGraphicsLineItem(QLineF(QPointF(0, 0), QPointF(100, 100))));   //在创景窗口中画一条直线
}

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

    MyWidget w;
    w.show();

    app.exec();
}

运行结果:


注意:此时画图的场景在主窗口的最左上方的位置,其大小刚好能花开图。

问题:怎样解决该问题使得图像在整个窗口进行展示呢?


思路一:增加一个窗口布局函数,将该场景添加到该布局中


源文件MyWidget.cpp


#include "MyWidget.h"
#include<QAp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值