8Qt屏幕监控

来源:互联网 发布:围棋形势判断算法 编辑:程序博客网 时间:2024/06/05 19:43
  可以抓取出屏幕的截图并保存成图片
  屏幕的监控,屏幕录制
1,界面设计
2,头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include <QPixmap>
#include <QDesktopWidget>
#include <QMessageBox>
#include <QFileDialog>
#include <QContextMenuEvent>
#include <QMenu>
#include <QAction>
#include <QCursor>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected:
   void ContextMenuEvent(QContextMenuEvent *event);
private slots:
    void on_pushButton_7_clicked();
    void shotScreenSlot();
    void on_pushButton_6_clicked();
private:
    Ui::MainWindow *ui;
    QTimer *timer;
    QPixmap pixmap;
};
#endif // MAINWINDOW_H
3,源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDesktopServices>
#include <QClipboard>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->spinBox->setValue(3);
}
MainWindow::~MainWindow()
{
    delete ui;
}
//截图实现
void MainWindow::on_pushButton_7_clicked()
{
    if(ui->checkBox->isChecked())
    {
    //this->hide();  //隐藏窗口
    this->timer=new QTimer;
        connect(this->timer,SIGNAL(timeout()),
                this,SLOT(shotScreenSlot()));
     this->timer->start(1000/24);
    }
    else
    {
        qApp->beep(); //泵的一声
    }
}
void MainWindow::shotScreenSlot()
{
  this->pixmap=QPixmap::grabWindow(QApplication::desktop()->winId());
  ui->label->setPixmap(this->pixmap.scaled(ui->label->size()));
  //this->show();
  //QClipboard *clipboard = QApplication::clipboard();
  //  clipboard->setPixmap(pixmap);
 // this->timer->stop();
}
//保存截图
void MainWindow::on_pushButton_6_clicked()
{
    QString fileName=QFileDialog::getSaveFileName(this,
    "Save File",QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
    this->pixmap.save(fileName);
}
//右键点击事件
void MainWindow::ContextMenuEvent(QContextMenuEvent *event)
{
    /*
    QMenu *menu=new QMenu(this);
    QAction *action=new QAction(this);
    connect(action,SIGNAL(triggered()),this,SLOT(on_pushButton_6_clicked()));
    action->setText("Save As");
    menu->addAction(action);
    menu->exec(QCursor::pos());
    */
}
源代码资料
屏幕录制源代码
博文索引  持续更新中。。。