QPixmap提供了两个函数 grabWidget 和 grabWindow 可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将 QPixmap存成文件。函数使用很简单,两行代码就可以。
这两个函数的原型如下:
grabWidget 和 grabWindow 两种方式,差别在于带不带 标题栏
需要强调的是: 执行<span>grabWidget()的时候,会自动调用 paintEvent(QPaintEvent∗event)进行重绘操作。如果想截取桌面上的一段区域大小,只需调用grabWindow函数,并且传入桌面的winId参数即可:
上面的程序,截取整个桌面,然后弹出一个保存文件的对话框,保存图像为指定文件。为了正确的使用grabWindow函数截取桌面屏幕,需要在程序文件开头添加#include <QDesktopWidget.h>以免出现编译错误。
这两个函数的原型如下:
grabWidget 和 grabWindow 两种方式,差别在于带不带 标题栏
需要强调的是: 执行<span>grabWidget()的时候,会自动调用 paintEvent(QPaintEvent∗event)进行重绘操作。如果想截取桌面上的一段区域大小,只需调用grabWindow函数,并且传入桌面的winId参数即可:
上面的程序,截取整个桌面,然后弹出一个保存文件的对话框,保存图像为指定文件。为了正确的使用grabWindow函数截取桌面屏幕,需要在程序文件开头添加#include <QDesktopWidget.h>以免出现编译错误。
QPixmap提供了两个函数 grabWidget 和 grabWindow 可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将 QPixmap存成文件。函数使用很简单,两行代码就可以。
这两个函数的原型如下:
grabWidget 和 grabWindow 两种方式,差别在于带不带 标题栏
需要强调的是: 执行<span>grabWidget()的时候,会自动调用 paintEvent(QPaintEvent∗event)进行重绘操作。如果想截取桌面上的一段区域大小,只需调用grabWindow函数,并且传入桌面的winId参数即可:
上面的程序,截取整个桌面,然后弹出一个保存文件的对话框,保存图像为指定文件。为了正确的使用grabWindow函数截取桌面屏幕,需要在程序文件开头添加#include <QDesktopWidget.h>以免出现编译错误。
http://www.hnmade.com/bbs/thread-12328-1-1.html
[C++]
纯文本查看 复制代码
1
2
3
|
QPixmap pixmap = QPixmap::grabWidget(
this
);
//this是调用该函数的QWidget指针
pixmap.save(“widget.png”,”png”);
|
[C++]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
QPixmap QPixmap::grabWindow(WId window,
int
x= 0,
int
y= 0,
int
w=-1,
int
h=-1)
WId 表示被截取窗口的ID号;
x,y 表示截取范围的起始坐标;
w,h 分别表示截取范围的宽度和高度,如果为 -1,则表示全部截取。
QPixmap QPixmap::grabWidget(QWidget *widget,
int
x=0,
int
y=0,
int
w=-1,
int
h=-1)
widget表示被截取窗口的画布部分,其余参数同grabWindow
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
void
MainWindow::on_pushButton_clicked()
{
QPixmap pixmap = QPixmap::grabWindow(
QApplication::desktop()->winId(),
pos().x(),pos().y(),
frameGeometry().width(),
frameGeometry().height() );
pixmap.save(
"d:\\a.bmp"
,
"bmp"
);
}
void
MainWindow::on_pushButton_2_clicked()
{
QPixmap pixmap = QPixmap::grabWidget(
this
);
pixmap.save(
"d:\\b.bmp"
,
"bmp"
);
}
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
void
Field::screenShot()
{
QPixmap pixmap;
QDesktopWidget *desktop = QApplication::desktop();
pixmap = QPixmap::grabWindow(desktop->winId());
QString format =
"png"
;
QString initialPath = QDir::currentPath()+
tr(
"/untitled."
) + format;
QString fileName = QFileDialog::getSaveFileName(
this
,
tr(
"Save As"
),initialPath,
tr(
"%1 Files (*.%2);;All Files (*)"
)
.arg(format.toUpper()).arg(format));
if
(!fileName.isEmpty())
pixmap.save(fileName, format.toAscii());
}
|
QPixmap提供了两个函数 grabWidget 和 grabWindow 可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将 QPixmap存成文件。函数使用很简单,两行代码就可以。
[C++]
纯文本查看 复制代码
1
2
3
|
QPixmap pixmap = QPixmap::grabWidget(
this
);
//this是调用该函数的QWidget指针
pixmap.save(“widget.png”,”png”);
|
[C++]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
QPixmap QPixmap::grabWindow(WId window,
int
x= 0,
int
y= 0,
int
w=-1,
int
h=-1)
WId 表示被截取窗口的ID号;
x,y 表示截取范围的起始坐标;
w,h 分别表示截取范围的宽度和高度,如果为 -1,则表示全部截取。
QPixmap QPixmap::grabWidget(QWidget *widget,
int
x=0,
int
y=0,
int
w=-1,
int
h=-1)
widget表示被截取窗口的画布部分,其余参数同grabWindow
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
void
MainWindow::on_pushButton_clicked()
{
QPixmap pixmap = QPixmap::grabWindow(
QApplication::desktop()->winId(),
pos().x(),pos().y(),
frameGeometry().width(),
frameGeometry().height() );
pixmap.save(
"d:\\a.bmp"
,
"bmp"
);
}
void
MainWindow::on_pushButton_2_clicked()
{
QPixmap pixmap = QPixmap::grabWidget(
this
);
pixmap.save(
"d:\\b.bmp"
,
"bmp"
);
}
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
void
Field::screenShot()
{
QPixmap pixmap;
QDesktopWidget *desktop = QApplication::desktop();
pixmap = QPixmap::grabWindow(desktop->winId());
QString format =
"png"
;
QString initialPath = QDir::currentPath()+
tr(
"/untitled."
) + format;
QString fileName = QFileDialog::getSaveFileName(
this
,
tr(
"Save As"
),initialPath,
tr(
"%1 Files (*.%2);;All Files (*)"
)
.arg(format.toUpper()).arg(format));
if
(!fileName.isEmpty())
pixmap.save(fileName, format.toAscii());
}
|
QPixmap提供了两个函数 grabWidget 和 grabWindow 可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将 QPixmap存成文件。函数使用很简单,两行代码就可以。
[C++]
纯文本查看 复制代码
1
2
3
|
QPixmap pixmap = QPixmap::grabWidget(
this
);
//this是调用该函数的QWidget指针
pixmap.save(“widget.png”,”png”);
|
[C++]
纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
QPixmap QPixmap::grabWindow(WId window,
int
x= 0,
int
y= 0,
int
w=-1,
int
h=-1)
WId 表示被截取窗口的ID号;
x,y 表示截取范围的起始坐标;
w,h 分别表示截取范围的宽度和高度,如果为 -1,则表示全部截取。
QPixmap QPixmap::grabWidget(QWidget *widget,
int
x=0,
int
y=0,
int
w=-1,
int
h=-1)
widget表示被截取窗口的画布部分,其余参数同grabWindow
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
void
MainWindow::on_pushButton_clicked()
{
QPixmap pixmap = QPixmap::grabWindow(
QApplication::desktop()->winId(),
pos().x(),pos().y(),
frameGeometry().width(),
frameGeometry().height() );
pixmap.save(
"d:\\a.bmp"
,
"bmp"
);
}
void
MainWindow::on_pushButton_2_clicked()
{
QPixmap pixmap = QPixmap::grabWidget(
this
);
pixmap.save(
"d:\\b.bmp"
,
"bmp"
);
}
|
[C++]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
void
Field::screenShot()
{
QPixmap pixmap;
QDesktopWidget *desktop = QApplication::desktop();
pixmap = QPixmap::grabWindow(desktop->winId());
QString format =
"png"
;
QString initialPath = QDir::currentPath()+
tr(
"/untitled."
) + format;
QString fileName = QFileDialog::getSaveFileName(
this
,
tr(
"Save As"
),initialPath,
tr(
"%1 Files (*.%2);;All Files (*)"
)
.arg(format.toUpper()).arg(format));
if
(!fileName.isEmpty())
pixmap.save(fileName, format.toAscii());
}
|
http://www.hnmade.com/bbs/thread-12328-1-1.html