contextMenuEvent

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDesktopWidget>
#include <QFileDialog>
#include <QScreen>
#include <QDir>
#include <QClipboard>
#include <QDebug>
#include <QCursor>
#include <QProcess>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_newPicButton_clicked()
{
    if (ui->radioButtonHide->isChecked()) {
        timer = new QTimer();
        //timer->setInterval(ui->spinBox->value()*1000);

        //this->hide();
        timer->start(1000/3);
        //int id = startTimer(ui->spinBox->value()*1000);
        connect(this->timer,&QTimer::timeout,this,[=]{
            //QDesktopWidget w;
            m_pic = QPixmap::grabWindow(QApplication::desktop()->winId());

            // 保存到剪切版
            //QClipboard *clipboard = QGuiApplication::clipboard();

//            QString originalText = clipboard->text();
//            qDebug() << originalText;
            //clipboard->setPixmap(m_pic);


            QSize size = ui->labelShowPic->size();
            ui->labelShowPic->setPixmap(m_pic.scaled(size));
            //timer->stop();
            //this->show();
        });


    }
    else {
        qApp->beep();// 嘀嘀响
    }
}

void MainWindow::on_savePicButton_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                               QDir::currentPath(),
                               tr("Images (*.png *.xpm *.jpg)"));

    if (!fileName.isEmpty()) {
        m_pic.save(fileName);
    }

}

void MainWindow::on_exitButton_clicked()
{
    this->close();
}

void MainWindow::contextMenuEvent(QContextMenuEvent *e)
{
    QMenu *menu = new QMenu(this);
    QAction *action = new QAction(this);
    QAction *startNotePad = new QAction(this);

    connect(action,&QAction::triggered,this,&MainWindow::on_savePicButton_clicked);
    connect(startNotePad,&QAction::triggered,this,&MainWindow::startNotePad);

    action->setText("Save as");
    startNotePad->setText("startNotePad");
    menu->addAction(action);
    menu->addAction(startNotePad);
    menu->exec(QCursor::pos());
}

void MainWindow::startNotePad()
{
    QProcess *p = new QProcess();
    p->start("notepad.exe");
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QPixmap>
#include <QContextMenuEvent>
#include <QMenu>
#include <QAction>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_newPicButton_clicked();

    void on_savePicButton_clicked();

    void on_exitButton_clicked();

    void contextMenuEvent(QContextMenuEvent *e);

    void startNotePad();

private:
    Ui::MainWindow *ui;

    QTimer *timer;
    QPixmap m_pic;
};

#endif // MAINWINDOW_H

猜你喜欢

转载自www.cnblogs.com/xiangtingshen/p/11074757.html