qt保存图片

在桌面使用grabWindow()截屏有两种方式:
1.grabWindow()处理后使用,也就是给它个window句柄继续使用。当然今天我们这里不讲它。我们讲下一种方法。
My main file:


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);


    ApplicationData appData;
    QQmlApplicationEngine engine;
    engine.load(QUrl("qrc:///main.qml"));
    return app.exec();
}



main.qml :


import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Window 2.1

ApplicationWindow {
    id: mainWindow
    width: appData.screenWidth
    height: appData.screenHeight
    visible: true


    Rectangle {
        id: mainWindowBackground
        color: "red"
        anchors.fill: parent
    } 


    ...
}


foreach(QObject* obj, engine.rootObjects()) {
  QQuickWindow* window = qobject_cast<QQuickWindow*>(obj);
  if (window) {
    QImage image = window->grabWindow();
    qDebug() << image;
  }
}




2.qml下grabToImage()截图。
其实在保存图片方面,qml也给了我们很多种方法了,我们来讲下其中的grabToImage()方法。它是属于Item的,所以可以使用的地方还是很多的。不废话了,方法如下:
Item{
    id:root
。。。。。
}
然后在js代码里:
onReleased:{
root.grabToImage(function(result) {
            result.saveToFile("E:/saveScreen.png");
    });
}


### QT保存图片的方法或代码示例 在QT中,可以通过`QImage`类和`QPixmap`类来实现图片保存功能。以下是一个完整的代码示例,展示了如何使用QT保存图片[^1]。 ```cpp #include <QApplication> #include <QScreen> #include <QPixmap> #include <QImage> #include <QRect> #include <QPoint> // 定义一个函数用于保存图片 void saveImage(const QPoint &beginPoint, const QPoint &endPoint) { // 获取主屏幕对象 QScreen *screen = QApplication::primaryScreen(); // 计算截图区域 int x = std::min(beginPoint.x(), endPoint.x()); int y = std::min(beginPoint.y(), endPoint.y()); int width = std::abs(beginPoint.x() - endPoint.x()); int height = std::abs(beginPoint.y() - endPoint.y()); if (width == 0) width = 1; // 确保宽度至少为1像素 if (height == 0) height = 1; // 确保高度至少为1像素 QRect rect(x, y, width, height); // 截取指定区域的窗口内容 QPixmap pix = screen->grabWindow(0, rect.x(), rect.y(), rect.width(), rect.height()); // 将QPixmap转换为QImage,并设置格式 QImage image = pix.toImage().convertToFormat(QImage::Format_RGBA8888); // 保存图片到文件 QString filePath = "screenshot.png"; if (image.save(filePath)) { qDebug() << "图片已成功保存至:" << filePath; } else { qDebug() << "保存图片失败!"; } } ``` 上述代码中,通过`QScreen::grabWindow`方法获取屏幕的指定区域内容,并将其保存为PNG格式的图片文件[^2]。如果需要保存为其他格式(如JPG),可以修改`image.save(filePath)`中的文件扩展名。 ### 注意事项 - 在保存图片时,确保目标路径具有写入权限。 - 如果图片保存失败,请检查文件路径是否正确以及磁盘空间是否充足。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值