ฉันสร้างโปรแกรมรั automated screenshots ทุกครั้งที่แหล่งข่าวของวโหลดเปลี่ยนไป! ฉันกำลังพยายามเชื่อมต่อ QML สัญญาณ(ภาพหน้าจอที่จับได้())เพื่อเป็น CPP แผน(take_screenshot()). อย่างไรก็ตาม take_screenshot ฟังก์ชัน()จะคืนไม่เคยถูกเรียกแม้ว่าแหล่งที่มาของวโหลดคือ beeing เปลี่ยนไปและฉันได้รับคอนโซลปูมบันทึกเป็นเอ่อ! นี่คือของฉัน cpp.h
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()
ใช่มั้ย?