这是我最初的问题:
我只想拍摄全屏QtQuick 2应用程序的屏幕截图(使用打印键).但是我得到的只是一张黑色或白色的屏幕截图.当应用程序未以全屏模式启动时,它将起作用.
解
我以为我在这里发布了一个非常好的解决方案,
即使它不能解决使用外部工具拍摄屏幕截图的原始问题.
从接受的答案的建议开始,我做了以下工作:
首先,我在QML主类中添加了一个信号(在main.qml中)
signal takeScreenShot()
按下某个按钮可发出该信号.
然后我在QML代码旁边编写了一个C / QT类来处理此信号:
class QMLSupplement : public QObject
{
Q_OBJECT
public:
QQuickView* view;
public:
QMLSupplement(QObject* parent = 0);
public slots:
void takeScreenShot();
};
对QQuickView的引用用于截屏.
void QMLSupplement::takeScreenShot()
{
QString file;
file = QDateTime::currentDateTime().toString("yyyy-MM-dd_hhmmss");
file += ".png";
qDebug() << "taking screenshot, saving here:" << file;
view->grabWindow().save(file);
}
最后,我将信号和main.cpp中的插槽连接起来:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
view.setSource(QUrl::fromLocalFile("./qml/main.qml"));
view.setResizeMode(QQuickView::SizeRootObjectToView);
QObject* rootObject = (QObject*) view.rootObject();
QMLSupplement supplement;
supplement.view = &view;
QObject::connect(rootObject, SIGNAL(takeScreenShot()),
&supplement, SLOT(takeScreenShot()));
view.show();
// view.showFullScreen();
return app.exec();
}