Qt C++ QDialog 中 QGraphicsView 右键另存为图像
要在 QDialog 的 QGraphicsView 中实现右键另存为图像,可以按照以下步骤进行:
- 在 QDialog 的头文件中添加必要的头文件和成员变量:
#include <QDialog>
#include <QGraphicsView>
class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog(QWidget *parent = nullptr);
private:
QGraphicsView *graphicsView;
};
- 在构造函数中创建 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));
});
}
- 在另存为图像的槽函数中,使用 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 保存为图像文件。
- 然后,你可以将 saveImage() 槽函数与另存为图像的动作关联起来,例如在构造函数中添加以下代码:
connect(saveAction, &QAction::triggered, this, &MyDialog::saveImage);
这样,当用户在 QGraphicsView 中右键点击'另存为图像'菜单项时,saveImage() 槽函数将被触发,执行另存为图像操作。
希望这可以帮助到你!
原文地址: https://www.cveoy.top/t/topic/qz9y 著作权归作者所有。请勿转载和采集!