私は Qt に非常に慣れていないため、理解できない Qt の問題がいくつかあります。誰かが私を助けてくれれば本当に感謝します。
アプリケーションを終了するために、アプリケーション ウィンドウのフレームを取り除き、qml で終了ボタンを作成しようとしています。したがって、次のようなプログラムを作成します。
main.cpp
#include <QtGui/QApplication>
#include <QDeclarativeContext>
#include <QObject>
#include "qmlapplicationviewer.h"
#include "myclass.h"
#include "mainwindow.h"
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyClass myClass;
MainWindow window;
window.rootContext()->setContextProperty("myObject", &myClass);
window.show();
return app.exec();
}
メインウィンドウ.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QDeclarativeView(parent)
{
// No window decorations
setWindowFlags(Qt::FramelessWindowHint);
// Set QML file
setSource(QUrl::fromLocalFile("qml/Test2/main.qml"));
}
// Destructor.
MainWindow::~MainWindow()
{
}
myclass.cpp
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include <QDeclarativeContext>
#include <stdio.h>
#include "myclass.h"
MyClass::MyClass()
{
click_count = 0;
}
int MyClass::click_function(void)
{
click_count++;
fprintf(stderr, "CLICK COUNT in CPP: %d\n", click_count);
return click_count;
}
qml
MouseArea {
id: mouse_exit
anchors.fill: parent
onClicked: {
console.log("Click on exit button: ")
console.log("click count: ", myObject.click_function())
Qt.quit();
}
}
正常にコンパイルされますが、終了ボタンをクリックすると、Qt エラー「Signal QDeclarativeEngine::quit() が発行されましたが、それを処理する受信者が接続されていません」が発生します。この問題をオンラインで検索したところ、QDeclarativeEngine::quit() シグナルを QApplication::quit() スロットに接続する必要があるようです。しかし、connect() 関数を使用するための情報はあまりありません。connect() を使用する方法をいろいろ試しましたが、この場合の使用方法はまだわかりませんでした。
誰でもこの問題を解決するのを手伝ってもらえますか? 本当に感謝します!