मैं बनाया एक आवेदन पत्र लेने के स्वचालित screenshots प्रत्येक समय के स्रोत के एक लोडर में बदल रहा है! मैं कोशिश कर रहा हूँ करने के लिए कनेक्ट QML संकेत (स्क्रीनशॉट()) के लिए एक सीपीपी स्लॉट (take_screenshot()). हालांकि, take_screenshot() समारोह में बुलाया गया कभी नहीं किया है, हालांकि के स्रोत लोडर beeing है बदल गया है और मैं कर रहा हूँ प्राप्त करने के कंसोल लॉग इन के रूप में अच्छी तरह से! यहाँ है मेरे सीपीपी.ज
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass(std::shared_ptr<QQmlApplicationEngine> engin)
: m_engine(engin)
{
QObject* root = m_engine->rootObjects()[0];
Q_ASSERT(root != nullptr);
QObject::connect(root, SIGNAL(screenshot()),
this, SLOT(take_screenshot()));
}
public slots:
int take_screenshot()
{
QString currentDateTime = QDateTime::currentDateTime().toString( "MMMM d, yyyy, HH:mm:ss");
QScreen *screen;
QPixmap pixmap;
screen = QGuiApplication::primaryScreen();
pixmap = screen->grabWindow(0);
QString screenshotPath = QDir::currentPath();
QString screenShotFileName = QString("%1/%2.png").arg(screenshotPath).arg(currentDateTime);
if (!screenShotFileName.isEmpty())
{
pixmap.save(screenShotFileName);
return 1;
}
else
return 0;
}
private:
std::shared_ptr<QQmlApplicationEngine> m_engine;
};
और यहाँ मेरे मुख्य.qml
Window {
id: mainWindow
visible: true
width: 640
height: 480
title: qsTr("Hello World")
signal screenshot()
Loader {
id: pageLoader
objectName: "pageLoader"
anchors.fill: parent
onSourceChanged: {
console.log("onSourceChanged_source :", pageLoader.source)
mainWindow.screenshot()
}
Component.onCompleted:{
console.log("onCompleted!", pageLoader.source)
mainWindow.screenshot()
}
}
}
किसी भी विचारों के बारे में इस मुद्दे सहायक हो सकते हैं! अग्रिम में धन्यवाद!
mainWindow.screenshot()
. मुझे लगता है कि आप का इरादा बदलने के लिए है कि करने के लिएUtils.screenshot()
, सही?