Signals & Slots | Qt 4.8https://doc.qt.io/archives/qt-4.8/signalsandslots.html
#ifndef WINDOW_H
#define WINDOW_H
#include <QWidget>
class QPushButton;
class Window : public QWidget
{
Q_OBJECT
public:
explicit Window(QWidget *parent = nullptr);
signals:
void counterReached();
public slots:
void slotButtonClicked(bool checked);
private:
QPushButton* m_button;
int m_counter;
};
#endif // WINDOW_H
#include "Window.h"
#include <QPushButton>
#include <QApplication>
Window::Window(QWidget *parent) : QWidget(parent)
{
this->setWindowTitle("QWT");
this->move(400,400);
this->setFixedSize(400,400);
m_button = new QPushButton("Hello World",this);
QIcon icon("C:\\Users\\MarX\\Desktop\\QProject\\icon.png");
m_button->setIcon(icon);
m_button->setIconSize(QSize(60,60));
m_button->move(200,200);
m_button->resize(150,100);
m_button->setCheckable(true);
m_counter = 0;
connect(m_button, SIGNAL (clicked(bool)), this, SLOT (slotButtonClicked(bool)));
//connect(m_button,&QPushButton::clicked,this,&QWidget::close);新版信号槽写法
connect(this, SIGNAL (counterReached()), QApplication::instance(), SLOT (quit()));
//you might wonder how to access to the QApplication instance while you are in another class. Actually, it is pretty simple, since there exists a static function in QApplication, with the following signature, that is used to get it:
//QApplication * QApplication::instance()
}
void Window::slotButtonClicked(bool checked)
{
if (checked)
{
m_button->setText("Checked");
}
else
{
m_button->setText("Hello World");
}
m_counter ++;
if (m_counter == 10)
{
emit counterReached();
}
}
#include <QApplication>
#include "Window.h"
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
Window window;
window.show();
return app.exec();
}