c – Qt错误:发出信号QDeclarativeEngine :: quit(),但没有连接
发布时间:2020-12-16 07:30:18 所属栏目:百科 来源:网络整理
导读:我对Qt很新,所以我无法弄清楚一些Qt问题.如果有人可以帮助我,我将非常感激. 我试图摆脱应用程序窗口的框架,并在qml中创建一个退出按钮,以退出应用程序.因此,我制作了如下程序: main.cpp中 #include QtGui/QApplication #include QDeclarativeContext #inclu
我对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(); } mainwindow.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: %dn",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(),但我仍然不知道如何在这种情况下使用它. 任何人都可以帮我解决这个问题吗?我真的很感激! 解决方法
语法是:
connect(sender,SIGNAL(signalName(args)),receiver,SLOT(slotName(args))); 你可以把它放在你的MyClass构造函数中: connect(this,SIGNAL(quit()),qApp,SLOT(quit())); 或者在main函数中,因为connect()是一个静态函数,正如Slavic81在下面的注释中指出的那样. 请注意,qApp是全局应用程序的宏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |