软件截图
- 新建截图
- 延迟3秒截图
- 隐藏本窗口截图
代码
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = ScreenShot
TEMPLATE = app
SOURCES += main.cpp\
screenshot.cpp
HEADERS += screenshot.h
FORMS += screenshot.ui
screenshot.h
#ifndef SCREENSHOT_H
#define SCREENSHOT_H
#include <QDialog>
namespace Ui {
class screenshot;
}
class screenshot : public QDialog
{
Q_OBJECT
public:
explicit screenshot(QWidget *parent = 0);
~screenshot();
private:
Ui::screenshot *ui;
void slotConnect();
private slots:
void sl_new();
void sl_save();
void sl_exit();
void sl_screen();
};
#endif // SCREENSHOT_H
main.cpp
#include "screenshot.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
screenshot w;
w.show();
return a.exec();
}
screenshot.cpp
#include "screenshot.h"
#include "ui_screenshot.h"
#include <QDebug>
#include <QScreen>
#include <QFileDialog>
#include <QTimer>
screenshot::screenshot(QWidget *parent) :
QDialog(parent),
ui(new Ui::screenshot)
{
ui->setupUi(this);
slotConnect();
}
screenshot::~screenshot()
{
delete ui;
}
void screenshot::slotConnect()
{
connect(ui->pushButton_new,SIGNAL(clicked()),this,SLOT(sl_new()));
connect(ui->pushButton_save,SIGNAL(clicked()),this,SLOT(sl_save()));
connect(ui->pushButton_eixt,SIGNAL(clicked()),this,SLOT(sl_exit()));
}
void screenshot::sl_new()
{
qDebug() << "sl_new";
//判断隐藏选项是否勾选
if(ui->checkBox_hide->isChecked())
{
this->hide();
}
//延时
QTimer::singleShot(ui->m_timebox->value()*1000,this,SLOT(sl_screen()));
}
void screenshot::sl_screen()
{
QScreen * screen = QGuiApplication::primaryScreen();
QPixmap pixmap = screen->grabWindow(0);
ui->screenPix->setPixmap(pixmap.scaled(ui->screenPix->size()));
if(this->isHidden())
{
this->show();
}
}
void screenshot::sl_save()
{
qDebug() << "sl_save";
const QPixmap * pixmap = ui->screenPix->pixmap();
if(pixmap)
{
QString strName = QFileDialog::getSaveFileName(this,"保存截图");
pixmap->save(strName);
}
}
void screenshot::sl_exit()
{
qDebug() << "sl_exit";
this->close();
}
screenshot.ui