QT学习之路之截图
QDesktopWidget类,提供了可以访问系统屏幕信息的方法。这个类提供有关该用户的桌面的信息,例如它的总大小,屏幕的数目,每个屏幕的几何形状,以及它们是否被配置为单独的台式机或单一的虚拟桌面。有图有代码。==============================================================================承载截图的控件
QDesktopWidget类,提供了可以访问系统屏幕信息的方法。这个类提供有关该用户的桌面的信息,例如它的总大小,屏幕的数目,每个屏幕的几何形状,以及它们是否被配置为单独的台式机或单一的虚拟桌面。
有图有代码。
==============================================================================
承载截图的控件是:QLabel 。
-----------------------------------------------------------------------------------------------------------------------------------------
开发环境:QT creater。
QT版本:5.4.0
-----------------------------------------------------------------------------------------------------------------------------------------
先说说这个New 按钮吧。看看代码:
//---新建槽函数
void CutScreen::on_NewBtn_clicked()
{
if (ui->checkBox->isChecked())
{
this->hide();
this->timer = new QTimer;
QObject::connect(this->timer,SIGNAL(timeout()), SLOT(shotScreenslot()));
//--启动定时器
this->timer->start(ui->spinBox->value() * 1000);
}
else
{
qApp->beep();
}
}先将当前截图工具隐藏,再做了个定时器,设置好世间后, 将执行截图函数。
只有在 勾选 “隐藏”checkBox后, 才能截图,否将执行else。 这里qApp->beep(),执行结果是,系统将会发生一声提示音。
再来看看这个 shotScreenslot()函数的实现吧。
//--截图槽函数
void CutScreen::shotScreenslot()
{
//---grabWindow是一个静态函数,不传参数,将截取整个屏幕。
//---这里的这个参数 QApplication::desktop()->winId(), 是为了确定当前屏幕所在ID
pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
//---显示截图,函数scaled是将截图按比例缩放。
ui->screenLabel->setPixmap(pixmap.scaled(ui->screenLabel->size()));
//---将截图放入系统剪切板中
QClipboard *clipboard = QApplication::clipboard();
clipboard->setPixmap(pixmap);
//--显示截图
this->show();
//---停止定时器
this->timer->stop();
}
我的注释写的很清楚了。这里就不再赘述了。
接下来是 Save 按钮事件。
//--保存槽函数
void CutScreen::saveshotScreenslot()
{
//--!!!!!!注意 writableLocation()函数
QString fileName = QFileDialog::getSaveFileName(this,"Save File", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
pixmap.save(fileName);
}
writableLocation()函数原型如下:
QString QStandardPaths::writableLocation(StandardLocation type)这个函数功能:返回所在类型的文件应写入的目录。
提示:QT4是用的是 下面的这种方式:
QString QDesktopServices::storageLocation(StandardLocation type)
:
这个就很简单了嘛。不过,还是把代码贴出来。万一哪天我 忘了 ...... 

首先要包含头文件:
#include <QMenu>
#include <QCursor>
#include <QAction> 其次是实现代码:
QMenu *menu = new QMenu;
QAction *action = new QAction("Save As", this);
QObject::connect(action,SIGNAL(triggered()), this, SLOT(saveshotScreenslot()));
menu->addAction(action);
menu->exec(QCursor::pos());
最后一行代码是,先获取鼠标的位置,菜单再根据鼠标的位置显示。
更多推荐


所有评论(0)