用qt开发一个删图小工具 要全代码
时间: 2024-03-15 20:45:54 浏览: 13
好的,我可以为您提供一个简单的代码示例,用于使用Qt开发一个简单的图像删除工具。以下是代码:
```cpp
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QFileDialog>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPixmap>
#include <QBrush>
#include <QPen>
#include <QGraphicsPixmapItem>
class MainWindow : public QMainWindow {
public:
MainWindow() {
setWindowTitle("Image Eraser");
// Create file menu
QMenu* fileMenu = menuBar()->addMenu("File");
QAction* openAction = fileMenu->addAction("Open...");
QAction* saveAction = fileMenu->addAction("Save...");
QAction* exitAction = fileMenu->addAction("Exit");
connect(openAction, &QAction::triggered, this, &MainWindow::openImage);
connect(saveAction, &QAction::triggered, this, &MainWindow::saveImage);
connect(exitAction, &QAction::triggered, qApp, &QApplication::quit);
// Create graphics view and scene
scene = new QGraphicsScene();
view = new QGraphicsView(scene);
setCentralWidget(view);
}
private slots:
void openImage() {
QString fileName = QFileDialog::getOpenFileName(this, "Open Image", ".", "Images (*.png *.xpm *.jpg)");
if (!fileName.isEmpty()) {
QPixmap pixmap(fileName);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(pixmap);
scene->addItem(item);
view->fitInView(item, Qt::KeepAspectRatio);
}
}
void saveImage() {
QString fileName = QFileDialog::getSaveFileName(this, "Save Image", ".", "Images (*.png *.xpm *.jpg)");
if (!fileName.isEmpty()) {
QPixmap pixmap(scene->sceneRect().size().toSize());
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
scene->render(&painter);
pixmap.save(fileName);
}
}
private:
QGraphicsScene* scene;
QGraphicsView* view;
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
```
这个示例程序创建了一个主窗口,其中包含一个菜单,可以从文件中打开图像,将其显示在图形场景中,然后允许用户保存修改后的图像。当用户选择打开图像时,该程序将使用Qt的文件对话框打开图像文件,并在场景中显示它。用户可以使用鼠标和橡皮擦工具来删除图像中的部分内容。当用户完成编辑并选择保存图像时,程序将使用Qt的文件对话框保存修改后的图像文件。