当前位置:首页 > QT C++图形界面编程技术
voidon_SaveButton_clicked();
private:
Ui::Widget *ui;
QImagefinal_pix; //最终的截图 };
#endif// WIDGET_H
////
widget.ccp
#include\ #include\ #include
Widget::Widget(QWidget *parent) : QWidget(parent), ui(newUi::Widget) {
ui->setupUi(this);
this->setFixedSize(265,90);
this->setWindowTitle(\); }
Widget::~Widget() {
deleteui; } /**
按钮Cut被按下后,截图查看器PSee隐藏,主窗口隐藏,然后调用全屏截图器FEdit的
init()来获得
当前窗口的背景,并全屏显示 */
void Widget::on_CutButton_clicked() {
this->showMinimized();
this->hide();
emit StartCut(); //发出开始截图StartCut信号 } /**
保存按钮按下后,选择保存的位置,然后保存,保存成功后,截图查看器PSee隐藏,否则发出warning */
void Widget::on_SaveButton_clicked() {
QStringsaveName = QFileDialog::getSaveFileName (this, tr(\),\,
tr(\File(*.JPG)\));
if(saveName.isNull()) //没有选择路径,则返回主窗口 return;
if(final_pix.save(saveName))
emit PicSaved(); ////图片成功保存的信号 else
QMessageBox::warning(this,\,\); } /**
Get_Pix() 是下个SLOT,当FEdit发出Send_Pix信号时,主窗口就用Get_Pix来接收发出的图片指针
然后Enable保存按钮,显示主窗口,
然后将此图片的指针发给截图查看器PSee,并在截图查看器PSee显示此图片
*/
void Widget::Get_Pix_Show(QImage *final_pix) {
this->final_pix = *final_pix; //接收发出的图片指针
ui->SaveButton->setEnabled(true); //这里可保存了,则使保存按钮显示
this->showNormal();// }
//// FullEdit.h
#ifndef FULLEDIT_H #define FULLEDIT_H
#include
classQPixmap;
classFullEdit : publicQWidget {
Q_OBJECT public:
explicitFullEdit(QWidget *parent = 0);
QImageConverToShadow(QImage pix); //将原图转换为半透明的图片
//从原图pre在载取坐标(x1,y1),(x2,y2)所包围的部分区域的图片 QImage _Cut(QImagepre,int x1,int y1,int x2,int y2);
signals:
voidFinishCut(QImage *final_pix); //当用户释放左键时,用signal发送图片的指针
voidCancleCut(); //当用户在FullEdit上单击左键时,发出截图取消信号
public slots:
//收到StartCut信号后,FullEdit先初始化,记录下此时刻的屏幕背景,并全屏显示
voidInit_FCShow();
protected:
voidmousePressEvent(QMouseEvent *);
voidmouseMoveEvent(QMouseEvent *);
voidmouseReleaseEvent(QMouseEvent *);
voidpaintEvent(QPaintEvent *);
private:
QImage _screen; //存放当前的全屏的截图
QImage _shadow; //存放当前全屏截图的半透明的幅本
int x1,y1,x2,y2; //当前选定区域的两角的坐标
boolisLeftDown; //记录当前左键是否被按下 };
#endif// FULLEDIT_H
////
FullEdit.cpp
#include\ #include
#include
//#include
//#define myDebug
共分享92篇相关文档