3
內以截圖這是我原來的問題:
我只是想採取截圖(使用打印鍵)我的全屏QtQuick 2的應用。但我得到的只是一張黑色或有時是白色的屏幕截圖。當應用程序沒有以全屏啓動時,它可以工作。從全屏Qt Quick的應用
SOLUTION
,我想我在這裏發表一個非常好的解決方案, 儘管它不能解決採取截圖與外部工具的原始問題。
與接受答案的建議開始,我做了以下內容:
首先,我增加了一個信號,我的QML主類(在main.qml)
signal takeScreenShot()
這個信號按emmited某個按鈕。 然後寫一個C++/QT類autside的QML代碼來處理該信號:
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();
}
請爲回答這個問題後的解決方案。隨意回答你自己的問題,然後編輯問題文本本身的解決方案。 –