Sono consapevole del fatto che per utilizzare il meccanismo di Qt all'interno di una classe, la classe deve includere la macro Q_OBJECT
, ma sto tentando di utilizzare segnali e slot in main()
, senza usare alcuna classe.Impossibile connettersi a una funzione interna main()
Ecco il mio codice finora:
#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);
}
Ecco la finestra GUI generato:
Dal codice di cui sopra, il pulsante di uscita è collegato a quit()
, che è un Funzione Qt, quando cliccato funziona. Il pulsante di salvataggio assegnato alla funzione saveText()
, è configurato per uscire, ma non lo fa.
Per favore dimmi dove ho sbagliato nella comprensione dei segnali e degli slot in Qt.
Perché, dunque, pulsante di uscita funziona? La funzione 'quit()' all'interno di una classe che eredita da QObject? – CodeCrusader
'quit()' è uno slot all'interno di 'qApp' e' qApp' è un oggetto derivato da 'QObject'. – deepmax
Ok, ora è chiaro .. – CodeCrusader