QT编写简易截图工具
Windows和Linux下编译通过,版本5.9.1
##设计界面
新建Widget项目,进入ui设计界面,添加QLabel和两个QPushButton,布局如下:
Button重命名为pushButton_save和pushButton_snip。
加入menu如下,添加action并设置快捷键。
##创建截图窗口类
Markdown及扩展
添加新文件,选择QT Designer Form Class,如下,继承QWidget,类名修改为ScreenShot,作为截图窗口类。
##添加代码
转到mainwindow.h在类中添加重绘事件函数:
mainwindow.h
protected:
void paintEvent(QPaintEvent *);
另外添加按钮和菜单的槽函数:
mainwindow.h
private slots:
void on_actionSave_triggered();
void on_actionCopy_triggered();
void on_pushButton_snip_clicked();
void on_pushButton_save_clicked();
void on_actionSnip_triggered();
void timerSlot(); //定时器处理槽函数
void screenShotHideSlot(); //截图窗口消失槽函数
添加成员变量:(注意要加入头文件#include screenshot.h 和 QTimer)
mainwindow.h
private:
Ui::MainWindow *ui;
ScreenShot *wScreen; //截图窗口类
QTimer timer; //定时器
QPixmap tmpPix; //用于保存截图的临时变量
转到mainwindow.cpp实现成员函数
首先添加所需要用到的头文件:
mainwindow.cpp
#include "screenshot.h"
#include <QDesktopWidget>
#include <QPainter>
#include <QPixmap>
#include <QFileDialog>
#include <QMessageBox>
#include <QTimer>
#include <QClipboard>
再在构造函数中添加如下代码:
mainwindow.cpp
this->setWindowTitle(tr("截图工具"));
wScreen = new ScreenShot;
wScreen->hide(); //初始化不显示
QDesktopWidget *deskWidget = QApplication::desktop();
QRect deskRect = deskWidget->geometry(); //获取桌面大小
resize(deskRect.width() / 3, deskRect.height() / 3);//设置窗口大小
connect(&timer,SIGNAL(timeout()),this,SLOT(timerSlot(