QApplication::processEvents在Windows中不起作用
QApplication::processEvents not working in Windows
我正在进行一个项目,该项目显示使用Qt的QCustomPlot插件实时获取的实时数据。显示器的背景颜色为黑色,多个数据通道的颜色不同。当截图时,我们希望它对打印机友好,所以背景是白色的,所有数据都是黑色的。我正在考虑这样的解决方案:
- 通过操纵图形对象的指针,以我想要的方式更改所有颜色
- 使用QWidget::Grab((获取屏幕截图以获得QPixmap
- 将所有颜色更改回正常
起初这并不奏效,因为系统无法及时更改颜色以拍摄屏幕截图。所以我使用了一个QApplication::processEvents((,它在我的Mac上都能工作。
但是,它不适用于Windows 7(这是必需的(。有什么想法吗?
代码:
QSting fileLocation = "...";
toggleColors(false); //function to toggle the colors
QApplication::processEvents();
QPixmap shot = grab();
toggleColors(true);
shot.save(fileLocation, "png");
再说一遍。它适用于Mac,但不适用于Windows。
更新1.切换的内容颜色包括:
if(enable)
ui->plot->setBackground(QBrush(Qt::black));
else
ui->plot->setBackground(QBrush(Qt::white));
ui->plot->repaint();
我也试过使用ui->plot->update()
。
我不确定Windows上的具体问题是什么,但我建议您在给定的小部件上调用QWidget::update((。这将强制下一次更新重新渲染自身。
另一方面,我不确定为什么toggleColors((没有以某种方式导致这种情况发生。
此外,请确保QWidget::setUpdatesEnabled(bool(未设置为"false"。
问题似乎出在QCustomPlot
上。通过执行对QCustomPlot
而非QWidget
特定的ui->plot->replot()
来解决该问题。
相关文章:
- Windows.h 输入在函数之外不起作用
- C++Windows API MOUSEEVENTF_XDOWN,MOUSEEVENTF_XUP不起作用
- boost zlib filter 在 Windows 中不起作用
- 在 Windows 上打印不起作用
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- QClipboard的信号选择已更改在Windows 7中不起作用
- 当我在Windows上运行它时,为什么我的Linux编译二进制不起作用
- 提升协程是否在 Windows x86_64 上不起作用
- 唯一的字符代码在 Linux 中运行时不起作用,但在 Windows (C++) 中很好
- 在 Windows 8 中编译的 DLL 在 Windows 7 中不起作用
- Visual C 2012 Express Compied Application在Windows XP上不起作用
- MinGW .h 编译文件不起作用:此文件的版本与您运行的 Windows 版本不兼容
- outputdebugstring,printf不起作用(Visual Studio 2012,Windows 8)
- getenv( "LINES" ) 在 Windows 上不起作用
- EDSDK消息循环在Windows 8.1下不起作用
- 注入dll在windows XP上不起作用
- MS Windows套接字示例对我不起作用
- 在Windows 7下编译的Dll在Windows XP中不起作用
- 在 Windows 7 上中止系统关闭不起作用
- perl 内联 cpp 在 Windows 32 位上不起作用