Qt 截屏 程式超級簡潔代碼

來源:互聯網
上載者:User

     最近搞了搞Qt的截屏程式,參考了網上幾個例子,但是那些例子都加了很多作者自己要完成的內容,別人看起來比較費勁,我整理了一下,其實真正起作用的就那麼幾行代碼,所以我覺得有必要分享一下

    QPixmap fullScreen;    int screenWidget = 640; //螢幕尺寸設定,自己要寫別的函數修改尺寸的改這裡    int screenHight  = 480;    //就是這一步截取了全屏    fullScreen = QPixmap::grabWindow(QApplication::desktop()->winId(),0,0,screenWidget,screenHight);    //這一步是設定彈出框詢問儲存位置和命名的,要自己修改位置和命名的改這裡//    QFileDialog::Options options;//    QString selectedFilter;//    QString fileName = QFileDialog::getSaveFileName(this,//                                    tr("Save picture"),//                                    "savescreen.jpg",//                                    &selectedFilter,//                                    options);    //設定地區,地區是從整螢幕中複製相應的地區,要自己寫函數的改這裡//    int x = 0;//    int y = 0;//    int w = 300;//    int h = 300;/****************************以下幾步是正常的儲存QPixmap,可以不轉QIameg****************************///    fullScreen = fullScreen.copy(x,y,w,h);    //截取地區改這裡//    fullScreen.save(fileName,"JPG") 需要有儲存對話方塊的這麼寫//    if(fullScreen.save("/savescreen.jpg","JPG"))//        qDebug("----------save screen success----------");/**************以下幾步是針對嵌入式系統,映像位元有限制,轉為了8位的映像,PC端可以不需要**************/    QImage image = fullScreen.toImage();//    image = image.copy(x,y,w,h);  //截取地區改這裡    //轉8位    image = image.convertToFormat(QImage::Format_Indexed8,Qt::AutoColor);    //image.save(fileName,"JPG") 需要有儲存對話方塊的這麼寫    if(image.save("/savescreen.jpg","JPG"))        qDebug("----------save screen success----------");

以上的代碼,只要寫在一個空的工程裡,就能運行了,我是在嵌入式的linux下運行,所以會有映像位元的限制,要轉一下QImage降低位元,我直接儲存在了固定的路徑,名稱也固定了,運行一次截一次圖,這樣就是最小最簡潔的了

然後我把各種需要擴充的地方都做了注釋,比如要自己寫介面設定地區的,我標了在哪裡改,自己要寫儲存路徑的,我也標出來在哪裡改,要是在PC端啟動並執行,可以直接儲存QPixmap。

僅希望對別人有所協助

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.