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

  1. 在 QDialog 的头文件中添加必要的头文件和成员变量:
#include <QDialog>
#include <QGraphicsView>

class MyDialog : public QDialog
{
    Q_OBJECT

public:
    MyDialog(QWidget *parent = nullptr);

private:
    QGraphicsView *graphicsView;
};
  1. 在构造函数中创建 QGraphicsView 对象,并为其添加右键菜单:
MyDialog::MyDialog(QWidget *parent)
    : QDialog(parent)
{
    graphicsView = new QGraphicsView(this);
    setCentralWidget(graphicsView);

    // 添加右键菜单
    graphicsView->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(graphicsView, &QGraphicsView::customContextMenuRequested, this, [=](const QPoint &pos) {
        QMenu *menu = new QMenu(this);
        QAction *saveAction = new QAction('另存为图像', this);
        connect(saveAction, &QAction::triggered, this, [=]() {
            // 执行另存为图像操作
            // ...
        });
        menu->addAction(saveAction);
        menu->exec(graphicsView->mapToGlobal(pos));
    });
}
  1. 在另存为图像的槽函数中,使用 QPixmap::grabWidget() 方法将 QGraphicsView 的内容保存为图像文件:
void MyDialog::saveImage()
{
    QString savePath = QFileDialog::getSaveFileName(this, '保存图像', '', 'Images (*.png *.jpg *.bmp)');
    if (!savePath.isEmpty()) {
        QPixmap pixmap = QPixmap::grabWidget(graphicsView);
        pixmap.save(savePath);
    }
}

注意:在槽函数中,可以使用 QFileDialog 来选择保存的路径和文件名,并使用 QPixmap::save() 方法将 QPixmap 保存为图像文件。

  1. 然后,你可以将 saveImage() 槽函数与另存为图像的动作关联起来,例如在构造函数中添加以下代码:
connect(saveAction, &QAction::triggered, this, &MyDialog::saveImage);

这样,当用户在 QGraphicsView 中右键点击'另存为图像'菜单项时,saveImage() 槽函数将被触发,执行另存为图像操作。

希望这可以帮助到你!

Qt C++ QDialog 中 QGraphicsView 右键另存为图像

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

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