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);