我对 Qt 很陌生,所以有些 Qt 问题我搞不懂。如果有人能帮助我,我将不胜感激。
我试图摆脱应用程序窗口的框架并在 qml 中创建一个退出按钮以退出应用程序。因此,我编写了一个程序如下:
主要.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()
{
}
我的类.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() emitted, but no receivers connected to handle it”就会发生。根据我在网上搜索这个问题,似乎我必须将 QDeclarativeEngine::quit() 信号连接到 QApplication::quit() 插槽。但是没有太多关于使用 connect() 函数的信息。我尝试了很多方法来使用 connect(),但我仍然不知道如何在这种情况下使用它。
谁能帮我解决这个问题?我真的很感激!
最佳答案
语法是:
connect(sender, SIGNAL(signalName(args)), receiver, SLOT(slotName(args)));
您可以将它放在您的 MyClass 构造函数中:
connect(this, SIGNAL(quit()), qApp, SLOT(quit()));
或者在 main 函数中,因为 connect()
是一个静态函数,正如 Slavic81 在下面的评论中指出的那样。
请注意,qApp 是全局应用程序的宏。
关于c++ - Qt 错误:发出信号 QDeclarativeEngine::quit(),但没有连接接收器来处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399686/