Ich bin mir bewusst, dass die Klasse den Q_OBJECT
Makro verwenden muss, um die Signale und Slots-Mechanismus von Qt innerhalb einer Klasse zu verwenden, aber ich versuche, Signale und Steckplätze in main()
zu verwenden , ohne irgendeine Klasse zu benutzen. bisherKonnte kein Signal an eine Funktion in main() anschließen
Hier ist mein Code:
#include <QApplication>
#include <QWidget>
#include <QTextEdit>
#include <QtGui>
void saveText();
int main(int argv, char **args)
{
QApplication app(argv, args);
QTextEdit textEdit;
QPushButton saveButton("Save!");
QPushButton exitButton("Exit!");
QObject::connect(&exitButton,SIGNAL(clicked()),qApp,SLOT(quit()));
QObject::connect(&saveButton,SIGNAL(clicked()),qApp,SLOT(saveText()));
QVBoxLayout vlyt;
vlyt.addWidget(&textEdit);
vlyt.addWidget(&exitButton);
vlyt.addWidget(&saveButton);
QWidget mainWindow;
mainWindow.setLayout(&vlyt);
mainWindow.show();
return app.exec();
}
void saveText()
{
exit(0);
}
Hier sind die GUI-Fenster erzeugt:
Aus dem obigen Code wird die Exit-Taste, um quit()
verbunden, die eine ist Qt-Funktion, wenn geklickt wird, funktioniert es. Die Speichern-Schaltfläche, die der Funktion saveText()
zugewiesen ist, ist zum Beenden konfiguriert, tut dies jedoch nicht.
Bitte sagen Sie mir, wo ich beim Verständnis von Signalen und Slots in Qt falsch gelaufen bin.
Warum arbeitet Exit-Taste? Ist die 'quit()' Funktion innerhalb einer Klasse, die von QObject erbt? – CodeCrusader
'quit()' ist ein Slot innerhalb 'qApp' und' qApp' ist ein Objekt, das von 'QObject' abgeleitet ist. – deepmax
Ok, jetzt ist es klar .. – CodeCrusader