2017-12-03 31 views
1

なぜファイルを保存しないのですか?あなたが探しているファイルが実行可能ファイルの同じフォルダにある必要がありQt5 - スクリーンショットを作成してファイルに保存するのはなぜですか?

#include "mainwindow.h" 
#include <QApplication> 
#include <QPixmap> 
#include <QPainter> 
#include <QList> 
#include <QScreen> 


QPixmap grabScreens() { 
    auto screens = QGuiApplication::screens(); 
    QList<QPixmap> scrs; 
    int w = 0, h = 0, p = 0; 
    foreach (auto scr, screens) { 
    QPixmap pix = scr->grabWindow(0); 
    w += pix.width(); 
    if (h < pix.height()) h = pix.height(); 
    scrs << pix; 
    } 
    QPixmap final(w, h); 
    QPainter painter(&final); 
    final.fill(Qt::black); 
    foreach (auto scr, scrs) { 
    painter.drawPixmap(QPoint(p, 0), scr); 
    p += scr.width(); 
    } 
    return final; 
} 


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

    QPixmap pixmap = grabScreens(); 

    QFile file("file.jpg"); 
    file.open(QIODevice::WriteOnly); 
    pixmap.save(&file, "JPG", 1); 

    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

enter image description here

+0

コードの問題と作業ディレクトリ構成の問題を区別するために、絶対出力パスをハードコードしてみてください。 – Drop

+0

C:\には管理者権限が必要です。ホームディレクトリ内のパスを試してみてください。デスクトップ – Drop

+0

C:\\ – YumYumYum

答えて

2

Qtcreatorからコードを実行している場合は、「プロジェクト」ページの「ビルド設定」で指定されているように、ビルドディレクトリにコードが存在する必要があります。

+0

上記のEDITスクリーンショットをご覧ください。それはまったくそこに保存されません。 – YumYumYum

+0

untitled.exeを直接実行して(ダブルクリック)、何が起こるかを確認してください。 –

+0

ダブルクリックするとエラーが表示されます:https://imgur.com/a/bAPah – YumYumYum

0

QStandardPathsを使用して、スクリーンショットが保存される書き込み可能な場所を問い合わせることを検討する必要があります。これにより、読み取り専用ディレクトリに書き込もうとする問題が回避されます。

関連する問題