zoukankan      html  css  js  c++  java
  • QT笔记 -- (5) 实现QWidget的paintEvent函数,在widget上画背景图形

     

    如图,想在界面上画个弧线和直线,于是继承QWidget得到类MainContainer,并实现了paintEvent函数。然后用类MainContainer定义centralWidget。

    MainContainer.h

    #pragma once
    #include "qwidget.h"
    #include <QPainter>
    
    class MainContainer : public QWidget{
        Q_OBJECT
    public:
        MainContainer(QWidget *parent = 0) :QWidget(parent){};
        ~MainContainer();
        void addGeometry(int type,QRectF rect){
            if (type == 0) arcList.push_back(rect);
            else if (type == 1) rectList.push_back(rect);
        }
    private:
        QPainter *painter;
        std::vector<QRectF> rectList;
        std::vector<QRectF> arcList;
        void paintEvent(QPaintEvent*){
            painter = new QPainter;
            painter->begin(this);
            painter->setPen(QPen(Qt::green,2,Qt::DashLine));
            //painter->setBrush(QBrush(Qt::red,Qt::SolidPattern));
            for (auto rect : arcList){
                painter->drawArc(rect, 30*16, 120*16);
            }
            for (auto rect : rectList){
                painter->drawRoundRect(rect);
            }
            painter->end();
        };
    };

    MainContainer.cpp

    #include "MainContainer.h"
    
    MainContainer::~MainContainer()
    {
    }
  • 相关阅读:
    os.fork()
    解决方案:WindowsError: [Error 2]
    Python遍历文件夹和读写文件的方法
    导航帖
    IDEA后缀补全及快捷键
    Codeforces-Round#614 Div2
    图论算法-欧拉回路 专题训练
    快速求出n!质因数的个数
    Codeforces-Round#589 Div2
    洛谷P3386二分图匹配
  • 原文地址:https://www.cnblogs.com/redips-l/p/7002480.html
Copyright © 2011-2022 走看看