QPixmapの:: grapWindow(winID)画像を格納するための
現在のウィンドウIDのPIDプログラム取得QDesktopWidget
各ウィンドウはwinIDを(有する)を
現在のウィンドウIDのPIDプログラム取得QDesktopWidget
各ウィンドウはwinIDを(有する)を
3 //
スケーリングスケーリングなどピックスマップ
スケーリングスケーリングなどピックスマップ
オペレーティングシステムのQClipboardカット版
m_pic = QPixmapの:: grabWindow(w.winId())。
QClipboard *クリップボード= QGuiApplication ::クリップボード();
// QStringのoriginalText = clipboard->テキスト();
// qDebug()<< originalText。
clipboard-> setPixmap(m_pic)。
QClipboard *クリップボード= QGuiApplication ::クリップボード();
// QStringのoriginalText = clipboard->テキスト();
// qDebug()<< originalText。
clipboard-> setPixmap(m_pic)。
CPP
#include " mainwindow.h " の#include " ui_mainwindow.h " の#include <QDesktopWidget> 書式#include <QFileDialog> 書式#include <QScreen> 書式#include <QDir> 書式#include <QClipboard> 書式#include <QDebug> メインウィンドウ::メインウィンドウ(QWidgetの * 親): QMainWindow(親)、 UI(新しい宇井::メインウィンドウ) { UI - > setupUi(この); } メインウィンドウ::〜メインウィンドウ() { 削除UIを、 無効メインウィンドウ:: on_newPicButton_clicked() { 場合(UI-> radioButtonHide-> にisChecked()){ タイマー = 新しいQTimer(); // timer->のsetInterval(UI-> spinBox->値()* 1000); // this->非表示(); timer->開始(1000 / 3 ); // INT ID = startTimer(UI-> spinBox->値()* 1000)。 (接続これ >タイマー&QTimer ::タイムアウト、 - この、[= ] { // QDesktopWidget W; m_pic = QPixmapの:: grabWindow(はQApplication ::デスクトップ() - > winId()); //保存到剪切版 // QClipboard *クリップボード= QGuiApplication ::クリップボード(); // QStringのoriginalText = clipboard->テキスト(); // qDebug()<< originalText。 // clipboard-> setPixmap(m_pic)。 QSIZEサイズ = UI-> labelShowPic-> サイズ()。 UI - > labelShowPic-> setPixmap(m_pic.scaled(サイズ))。 // timer->停止(); // this->ショー(); }); } 他{ qApp - >ビープ音(); // 嘀嘀响 } } のボイドメインウィンドウ:: on_savePicButton_clicked() { QStringのfileNameに = QFileDialog :: getSaveFileName(これ、TR(" ファイルを保存" )、 QDir ::電流経路()、 TR(" イメージ(* .PNG * .xpm * .JPG)" )) ; もし(!fileName.isEmpty()){ m_pic.save(fileNameに); } } ボイドメインウィンドウ:: on_exitButton_clicked() { この - > 近いです(); }
.H
#ifndefのMAINWINDOW_H の#define MAINWINDOW_H の#include <QMainWindow> の#include <QTimer> の#include <QPixmapの> 名前空間Uiの{ クラスのメインウィンドウ。 } クラスのメインウィンドウ:公共QMainWindow { Q_OBJECTの公共: 明示的なメインウィンドウ(QWidgetの*親= nullptr)。 〜メインウィンドウ(); プライベートスロット: 無効on_newPicButton_clicked(); 空on_savePicButton_clicked(); 空on_exitButton_clicked(); プライベート : 宇井::メインウィンドウ * UI。 QTimer * タイマー。 QPixmapののm_pic。 }。 #endifの // MAINWINDOW_H
プロセス間通信の切断されたバージョンを達成するためにQClipBoard
#include " widget.h " の#include " ui_widget.h " ウィジェット::ウィジェット(QWidgetの * 親): はQWidget(親)、 UI(新しい宇井::ウィジェット) { UI - > setupUi(この); m_timer = 新しい QTimer(この); m_timer - >スタート(200 ); (m_timer、接続&QTimer ::タイムアウト、この、&ウィジェット:: fetchPicFromClipBoard)。 } ウィジェット::〜ウィジェット() { 削除UIを、 } 無効ウィジェット:: fetchPicFromClipBoard() { QClipboard *ボード= QGuiApplication ::クリップボード(); QPixmapのPIX =ボード- > ピックスマップ(); UI - >ラベル=> setPixmap(pix.scaled(UI->ラベル=> サイズ()))。 }
#ifndefのWIDGET_H の#define WIDGET_H の#include <QWidgetの> する#include <QClipboard> の#include <QTimer> 名前空間Uiの{ クラスウィジェット。 } クラスウィジェット:公共QWidgetの { Q_OBJECTの公共: 明示的なウィジェット(QWidgetの*親= nullptr)。 〜ウィジェット(); 無効fetchPicFromClipBoardを(); プライベート: 宇井::ウィジェット *のUI。 QTimer * m_timer。 }。#endifの// WIDGET_H