Qtのシグナルとスロットのメカニズムをクラス内で使用するには、クラスにQ_OBJECT
マクロが含まれている必要がありますが、信号とスロットをmain()
、クラスを使用せずに。ここでmain()内の関数にシグナルを接続できません
は、これまでの私のコードです:ここでは
#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);
}
は、生成されたGUIウィンドウである:上記のコードから
、終了ボタンがある、quit()
に接続されていますQt関数をクリックすると動作します。ファンクションsaveText()
に割り当てられた保存ボタンは、終了するように設定されていますが、終了しません。
Qtの信号とスロットの理解に間違ったところを教えてください。
なぜ終了ボタンの作業はありますか? QObjectから継承したクラスの中に 'quit()'関数がありますか? – CodeCrusader
'quit()'は 'qApp'内のスロットで、' qApp'は 'QObject'から派生したオブジェクトです。 – deepmax
Ok、今はそのクリア.. – CodeCrusader