8Qt屏幕監控

  可以抓取出屏幕的截圖並保存成圖片
  屏幕的監控,屏幕錄製
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());
    */
}

源代碼資料
屏幕錄製源代碼
博文索引  持續更新中。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章