要在 QDialog 中的 QGraphicsView 实现右键另存为图像,你可以按照以下步骤进行操作:

  1. 在 QDialog 的头文件中包含 QGraphicsView 和 QMouseEvent 的头文件:
#include <QGraphicsView>
#include <QMouseEvent>
  1. 在 QDialog 的源文件中重写 QGraphicsView 的 mousePressEvent 函数,以检测鼠标右键点击事件:
void YourDialog::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::RightButton)
    {
        saveAsImage();
    }
    else
    {
        // 处理其他鼠标事件
        QDialog::mousePressEvent(event);
    }
}
  1. 实现 saveAsImage 函数,用于将 QGraphicsView 中的内容保存为图像文件:
void YourDialog::saveAsImage()
{
    QString filePath = QFileDialog::getSaveFileName(this, tr('Save Image'), '', tr('Image Files (*.png *.jpg *.bmp)'));
    if (!filePath.isEmpty())
    {
        QImage image(ui->graphicsView->viewport()->size(), QImage::Format_ARGB32);
        QPainter painter(&image);
        ui->graphicsView->scene()->render(&painter);
        image.save(filePath);
    }
}

这样,当用户在 QGraphicsView 中右键点击时,会弹出文件保存对话框,用户选择保存的文件路径后,会将 QGraphicsView 中的内容保存为图像文件。请确保你已经将 QGraphicsView 对象命名为'graphicsView',并将'ui'替换为你的实际变量名。

希望对你有帮助!

Qt C++ QDialog 中 QGraphicsView 右键另存为图像(不截图)

原文地址: https://www.cveoy.top/t/topic/qz96 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录