Tôi biết rằng sử dụng cơ chế tín hiệu và khe của Qt bên trong một lớp, lớp phải bao gồm macro Q_OBJECT
, nhưng tôi đang cố gắng sử dụng tín hiệu và vị trí trong main()
mà không sử dụng bất kỳ lớp nào.Không thể kết nối tín hiệu với chức năng bên trong main()
Đây là mã của tôi cho đến nay:
#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);
}
Đây là cửa sổ GUI tạo:
Từ đoạn code trên, nút thoát được kết nối với quit()
, mà là một Qt chức năng, khi nhấp vào nó hoạt động. Nút lưu được gán cho hàm saveText()
, được định cấu hình để thoát nhưng không làm như vậy.
Hãy cho tôi biết tôi đã đi sai trong việc hiểu tín hiệu và vị trí trong Qt.
Vậy tại sao là nút thoát làm việc? Có phải hàm 'quit()' nằm trong một lớp kế thừa từ QObject không? – CodeCrusader
'quit()' là một khe bên trong 'qApp' và' qApp' là một đối tượng bắt nguồn từ 'QObject'. – deepmax
Ok, bây giờ rõ ràng .. – CodeCrusader