gpt4 book ai didi

c++ - 当窗口/屏幕上发生任何变化时的 Qt 事件 + 屏幕截图

转载 作者:行者123 更新时间:2023-11-30 02:35:10 24 4
gpt4 key购买 nike

我正在考虑扩展具有一些调试可能性的 QT4 应用程序,以便更轻松地分析客户问题。该应用程序已经具有“调试”模式,启用此模式后,会生成大量难以阅读的日志条目。 我想要实现的是在 GUI 上发生更改时截取应用程序的屏幕截图。我知道可能会拍很多照片,但一般都是长时间不开启Debug模式。问题是我找不到这样的事件/信号。所以我有两个问题:

  1. 我可以订阅这样的事件吗?我的意思是,一个事件是每当屏幕上发生任何变化时触发。
  2. 我可以使用 Qt 截取应用程序的屏幕截图吗?

提前致谢!

最佳答案

我会使用一个事件过滤器和一个 QTimer 来完成它,就像这样:

class MyEventFilter : public QObject
{
public:
MyEventFilter() : _screenshotPending(false) {/* empty */}

virtual bool eventFilter(QObject * o, QEvent * e)
{
if (e->type() == QEvent::Paint)
{
if (_screenshotPending == false)
{
// we'll wait 500mS before taking the screenshot
// that way we aren't trying to take 1000 screenshots per second :)
_screenshotPending = true;
QTimer::singleShot(500, this, SLOT(TakeAScreenshot()));
}
}
return QObject::eventFilter(o, e);
}

public slots:
void TakeAScreenshot()
{
_screenshotPending = false;

// add the standard Qt code for taking a screenshot here
// see $QTDIR/examples/widgets/desktop/screenshot for that
}

private:
bool _screenshotPending; // true iff we've called QTimer::singleShot() recently
};

int main(int argc, char ** argv)
{
MyEventFilter filter;

QApplication app(argc, argv);
app.installEventFilter(&filter);
[...]

return app.exec();
}

关于c++ - 当窗口/屏幕上发生任何变化时的 Qt 事件 + 屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com