我試圖用QT中的Paint事件(WM_Paint)事件截圖,但我不知道如何, 我用這段代碼截圖,但它不是真的適合做這個 它必須做截圖時桌面的一些變化不會採取截圖每1000毫秒就你感興趣的小部件定時器如何截圖與QT的Paint事件(WM_Paint)
void MainWindow::shootScreen()
{
originalPixmap = QPixmap(); // clear image for low memory situations
// on embedded devices.
originalPixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
//emit getScreen(originalPixmap);
updateScreenshotLabel();
}
void MainWindow::updateScreenshotLabel()
{
this->ui->label_2->setPixmap(originalPixmap.scaled(this->ui->label_2- >size(),
Qt::KeepAspectRatio,
Qt::SmoothTransformation));
}
你不能發射si來自你熱衷的UI控件。就像,如果您想在文本框中的文本更改或圖像控件中的圖像發生更改時進行截圖,只需創建一個自定義控件並在控件內容發生更改時發出信號。從插槽中抓取屏幕截圖?如果你在繪畫中這樣做,太多的場景會激發繪畫,所以截圖會被不必要地採用。 – Suneesh
最簡單的解決方案是在感興趣的對象上安裝事件過濾器。 –
你在截取哪些東西?如果它是整個桌面,那麼在Qt中沒有跨平臺的方式來監視它的更新;你必須閱讀它是如何在每個平臺上完成的。無論如何,無論是在Windows上的屏幕本機表示顯然不會得到繪畫事件。 –