事件:指用户输入事件,点击一个按钮,之类的
事件处理:当事件发生时,程序作出的反应称之为事件处理。
信号和槽:signal & slot
理论模型:对象a发出一个信号 signal : xxx(代表一个事件)其他对象b中的槽 slot:yyy(事件处理函数)
通过connect(a,xxx,b,yyy);
例如:
//connect(ui.but_show, /对象 a,必须是 一个QObject类型*/
// SIGNAL(clicked(bool)),/a的信号/
// this, /接收者/
// SLOT(OnShowClicked(bool))/* b的槽函数*/
//);
例程(按键点击,显示hello,world):
main.cpp
#include "test04_1a.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Test04_1A w;
w.show();
return a.exec();
}
test04_1a.cpp (ui文件对应的cpp 文件)
#include "test04_1a.h"
Test04_1A::Test04_1A(QWidget *parent): QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.but_show,SIGNAL(clicked(bool)),this,SLOT(OnShowClicked(bool)));
}
Test04_1A::~Test04_1A()
{
}
int Test04_1A::OnShowClicked(bool chenked)
{
ui.my_textEdit->setPlainText("hello,world");
return 0;
}
test04_1a.h
#include <QtWidgets/QMainWindow>
#include "ui_test04_1a.h"
class Test04_1A : public QMainWindow
{
Q_OBJECT
public:
Test04_1A(QWidget *parent = Q_NULLPTR);
~Test04_1A();
private slots:
int OnShowClicked(bool checked);
//void clicked(bool checked = false);
private:
Ui::Test04_1AClass ui;
};
test04_1a.ui :
效果:
有些地方我自己也有点理解不透彻,需要巩固巩固。