一、环境介绍
操作系统介绍:win10 64位
QT版本: 5.12.6
#include <QMenu> #include <QApplication> #include <QClipboard> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ..................................... //添加菜单 image_menu=new QMenu; QAction* action_save_buff; //QAction 可以同时出现在菜单和工具条上的抽象用户界面操作 action_save_buff=image_menu->addAction("保存到剪切板"); //关联点击信号 connect(action_save_buff,SIGNAL(triggered(bool)),this,SLOT(SaveImageToClipboard(bool))); action_save_buff=image_menu->addAction("保存到文件"); //关联点击信号 connect(action_save_buff,SIGNAL(triggered(bool)),this,SLOT(SaveImageToFile(bool))); ui->toolButton_save_image->setMenu(image_menu); /*当按下工具按钮时,将毫不延迟地显示菜单。在这种模式下,按钮本身的动作不会被触发.*/ ui->toolButton_save_image->setPopupMode(QToolButton::InstantPopup); } Widget::~Widget() { delete ui; } /** * @brief Widget::SaveImageToFile * 保存图片到文件 */ void Widget::SaveImageToFile(bool flag) { qDebug()<<"保存图片到文件"; QString filename=QFileDialog::getSaveFileName(this,"保存到文件","C:/imagefile.jpg",tr("*.bmp *.jpg *.png *.*")); if(filename.isEmpty())return; //获取窗口图像数据保存为图片文件 QPixmap pix=ui->widget_VideoDisplay->grab(); pix.save(filename); } /** * @brief Widget::SaveImageToClipboard * 保存图片到剪切板 */ void Widget::SaveImageToClipboard(bool flag) { //获取widget控件的数据 QPixmap pix = ui->widget_VideoDisplay->grab(); //保存到剪切板 QApplication::clipboard()->setPixmap(pix); }