1 新建工程
先创建一个控件基础工程,创建后的界面如下:
主函数我们不需要修改,就保持这样,对于C++的知识我不太理解。
上述代码中,执行到第7行的时候,会先去执行基类的构造函数,再执行MyWidget类的构造函数。我们只需要在构造函数中实现需要实现的功能。
构造函数对应在mywidget.cpp中:
2 测试代码
实例一:标准的信号处理
测试目的:在主窗口中,新建两个按钮,功能如下:
按钮一的功能:按下按钮,关闭主窗口;
按钮二的功能:释放按钮,更改按钮二的文本,并隐藏按钮一。
由于在实现过程中,会用到信号与槽的知识,就先简单介绍一下基本知识,可能不正确,这只是我个人的理解:
信号:某一事件发生时产生,用于表示一个事件发生了。
槽:就是信号处理函数,用于指示当信号发生时,需要做出什么动作。
其中,我们connect函数来连接信号与槽之间的关系,函数的原型如下:
connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection);
举例说明:
connect(&b1, &QPushButton::pressed, this, &MyWidget::close);
/* &b1:信号发出者,指针类型
* &QPushButton::pressed:处理的信号,&发送者的类名::信号名字
* this:信号接收者
* &MyWidget::close:槽函数,信号处理函数 &接收的类名::槽函数名字
*/
不同的控件有哪些信号,可通过帮助文档查看,以QPushButton为例进行说明(点QPushButton,再按F1):
这里没有看到signal函数,可能是从它的父类继承过来的,我们再看一下它的父类:
实现的相关代码
先在MyWidget类中实现两个按钮(mywidget.h):
1 #ifndef MYWIDGET_H2 #define MYWIDGET_H
3
4 #include
5 #include
6
7 class MyWidget : publicQWidget8 {9 Q_OBJECT10
11 public:12 MyWidget(QWidget *parent = 0);13 ~MyWidget();14
15 private:16 QPushButton b1;17 QPushButton *b2;18
19 voidmyslot();20
21 };22
23 #endif //MYWIDGET_H
View Code
再在构造函数中实现两个按钮的功能(mywidget.cpp):