Qt图形库——Qt画图板

Qt图形库——Qt画图板

完整代码:

//mainwindows.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QColorDialog>
#include <QInputDialog>
#include <QActionGroup>
#include <QFileDialog>
#include <QMainWindow>
#include <QKeyEvent>
#include <QToolBar>
#include <QMenuBar>
#include <QSlider>
#include <QAction>
#include <QColor>
#include <QLabel>
#include <QMenu>
#include <QDial>


#include "paint.h"
#include "type.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void keyPressEvent(QKeyEvent *);    //键盘事件
    void keyReleaseEvent(QKeyEvent *);  //键盘事件
signals:
    void openFile_SIGNAL(QString);
    void saveFile_SIGNAL(QString);      //文件操作信号

    void change_straight(bool);          //改变是否笔直绘画的信号

    void color_change(QColor);          ///属性调整信号
    void brush_change(QColor);
    void width_change(int);         //设置线条粗细的信号
    void alpha_change(int);         //设置透明度的信号

    void select_shape(type);      //选择形状信号


private slots:
    void change_widthLabel(int);        ///改变属性的槽
    void change_alphaLabel(int);
    void color_SLOT();
    void brush_SLOT();
    void width_SLOT();

    void draw_rect();           ///绘制槽
    void draw_line();
    void draw_pen();
    void draw_polygon();
    void draw_ellipse();

    void reset_dial();      //重置面板
private:
    QLabel *widthLabel;     //显示当前线条大小
    QDial *widthDial;
    QLabel *alphaLabel;     //显示当前透明度
    QDial *alphaDial;
    virtual QSize sizeHint() const override;        //调整窗体的函数
};

#endif // MAINWINDOW_H
<qcolordialog><qinputdialog><qactiongroup><qfiledialog><qmainwindow><qkeyevent><qtoolbar><qmenubar><qslider><qaction><qcolor><qlabel><qmenu><qdial>
</qdial></qmenu></qlabel></qcolor></qaction></qslider></qmenubar></qtoolbar></qkeyevent></qmainwindow></qfiledialog></qactiongroup></qinputdialog></qcolordialog>

//mainWindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    ///形状选择框架///
    QToolBar *shapeBar = this->addToolBar("Shape");
    QActionGroup *shapeGroup = new QActionGroup(shapeBar);

    QAction *act_rect = new QAction(QIcon(":res/Rect.ico"),"Draw a Rect", shapeBar);
    act_rect->setCheckable(true);
    act_rect->setChecked(true);
    shapeGroup->addAction(act_rect);
    shapeBar->addAction(act_rect);

    QAction *act_line = new QAction(QIcon(":res/Line.ico"),"Draw A Line", shapeBar);
    act_line->setCheckable(true);
    shapeGroup->addAction(act_line);
    shapeBar->addAction(act_line);

    QAction *act_pen = new QAction(QIcon(":res/pen.ico"), "Draw With Pen", shapeBar);
    act_pen->setCheckable(true);
    shapeGroup->addAction(act_pen);
    shapeBar->addAction(act_pen);

    QAction *act_ellipse = new QAction(QIcon(":res/Ellipse.ico"), "Draw A Ellipse", shapeBar);
    act_ellipse->setCheckable(true);
    shapeGroup->addAction(act_ellipse);
    shapeBar->addAction(act_ellipse);

    QAction *act_polygon = new QAction(QIcon(":res/Polygon.ico"), "Draw A Polygon", shapeBar);
    act_polygon->setCheckable(true);
    shapeGroup->addAction(act_polygon);
    shapeBar->addAction(act_polygon);

    操作选择框架/
    QToolBar *operatorBar = this->addToolBar("Operator");
    QActionGroup *operatorGroup = new QActionGroup(operatorBar);
    QAction *Undo = new QAction(QIcon(":/res/Undo.ico"), "Undo", operatorBar);
    Undo->setShortcut(tr("Ctrl+Z"));
    operatorGroup->addAction(Undo);
    operatorBar->addAction(Undo);

    QAction *Redo = new QAction(QIcon(":/res/Redo.ico"), "Redo", operatorBar);
    Redo->setShortcut(tr("Ctrl+Y"));
    operatorGroup->addAction(Redo);
    operatorBar->addAction(Redo);

    QAction *Reset = new QAction(QIcon(":/res/Reset.ico"), "Reset", operatorBar);
    Reset->setShortcut(tr("Ctrl+N"));
    operatorGroup->addAction(Reset);
    operatorBar->addAction(Reset);

    widthDial = new QDial(operatorBar);
    widthDial->setRange(1, 20);
    operatorBar->addWidget(widthDial);
    widthLabel = new QLabel("Size: 1", operatorBar);
    operatorBar->addWidget(widthLabel);

    alphaDial = new QDial(operatorBar);
    alphaDial->setRange(0, 100);
    alphaDial->setValue(100);
    operatorBar->addWidget(alphaDial);
    alphaLabel = new QLabel("Alpha: 100%", operatorBar);
    operatorBar->addWidget(alphaLabel);

    菜单区域
    QMenu *file = menuBar()->addMenu(tr("&File"));
    QAction *newFile = new QAction(QIcon(":/res/New.ico"),tr("New"), file);
    newFile->setShortcut(tr("Ctrl+N"));
    file->addAction(newFile);
    QAction *openFile = new QAction(QIcon(":/res/open.ico"),tr("Open"), file);
    openFile->setShortcut(tr("Ctrl+O"));
    file->addAction(openFile);
    QAction *saveFile = new QAction(QIcon(":/res/Save.ico"),tr("Save"), file);
    saveFile->setShortcut(tr("Ctrl+S"));
    file->addAction(saveFile);
    QAction *saveAsFile = new QAction(QIcon(":/res/SaveAs.ico"),tr("Save As"), file);
    saveAsFile->setShortcut(tr("Ctrl+Alt+S"));
    file->addAction(saveAsFile);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gscsdlz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值