QT 刷新及截屏问题:
这是新创建的基于QMainWindow的程序, 默认情况下是白色背景, 我有如下需求,
点击一个按钮,槽函数为GrabWindow,
期望结果是:
执行一个循环,依次将窗口背景设为红、绿、蓝,每次设为背景色后截屏并存成文件,即得到红、绿、蓝三张图片。
实际结果:
得到白(程序初始化得白色)、红、绿三张图片, 貌似每次截图都是上次的背景色,当前设置的颜色未立即生效。
processEvents()调用后不是应该刷新完成了吗?
void QtGuiApplication1::GrabWindow()
{
static QStringList styles;
if(styles.isEmpty())
{
styles.append("background-color:#FF0000");
styles.append("background-color:#00FF00");
styles.append("background-color:#0000FF");
}
for(int i = 0; i < styles.length(); i++)
{
setStyleSheet(styles[i]);
repaint();
QCoreApplication::processEvents();
QScreen *screen = QGuiApplication::primaryScreen();
QPixmap screenshot = screen->grabWindow(0);
char path[100] = {0};
sprintf(path, "/home/screen %d.png",i+1);
bool ret = screenshot.save(path,"PNG");
qDebug() << "Save " << ret;
}
}