本人是菜鸟,这里记录的每天的学习内容
学习Qt的第二天(smile)
学习内容:
1. 新建按钮
2. 指定父对象
3. 设定按钮标题(命名)
4. 设定按钮坐标
5. 利用按钮关闭窗口(这里会用到信号与槽)
6. 利用按钮隐藏另一个按钮(这里会用到信号与槽)
6. 一定要掌握信号与槽
一、新建按钮命名 并指定父对象(显示在同一窗口上)
1.QPushButton 按钮头文件
2.在头文件中 ,添加私有成员QPushButton b1和b2两个按钮对象
3.QPushButton按钮需要指定父对象,在父对象窗口上显示按钮
注意:这里我们在widget.cpp中做,因为main会调用widget构造函数
widget.h中
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
//按钮头文件
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
//添加私有成员 按钮b1和b2
private:
QPushButton b1;//按钮b1
QPushButton b2;//按钮b2
};
#endif // WIDGET_H
widget.cpp中
#include "widget.h"
//按钮头文件
#include <QPushButton>
Widget::Widget(QWidget *parent)//widget构造函数
: QWidget(parent)
{
b1.setParent(this);//this指向的是父类的对象w
b1.setText("我的第一个按钮");//设置按钮的标题
b1.show();
}
Widget::~Widget()
{
}
这里我们可以看到运行之后可以显示出hello world窗口和一个按钮
二、设定按钮坐标
1.move(x,y)
2.在Qt中用x和y表示像素坐标
3.x表示表示横坐标,y表示纵坐标
widget.cpp中
#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("我的第一个按钮");
b1.move(100,100);//指定按钮坐标
b1.show();
}
Widget::~Widget()
{
}
运行后b1按钮就改变了位置:
三、利用按钮关闭窗口
1.利用b1按钮关闭当前主窗口
2.了解信号
3.了解解槽
widget.cpp中
#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("我的第一个按钮");
b1.move(100,100);
/* &b1:信号发送者(指针类型)
&QPushButton::pressed :信号(信号处理者) 格式:&发送者的类名::信号名
this:信号接收者(this表示主窗口)
&MianWidget::close :槽(信号处理函数) 格式:&接受者的类名::槽函数名
*/
connect(&b1,&QPushButton::pressed,this,&Widget::close);
b1.show();
}
Widget::~Widget()
{
}
运行程序,按下按钮
此时我们可调出底部的应用程序输出框,我们可以发现程序窗口已经退出了
总结:
1.&b1表示信号的发送者,&QPushButton表示发送者的类名,pressed表示信号名(鼠标按下时触发)
2.this表示信号的接受者(即主窗口),&Widget表示接受者的类名,close表示槽函数(close起关闭作用)
四、利用按钮隐藏另一个按钮
1.建立2个按钮,一个用刚刚的b1按钮,还有一个私有成员中已经定义生成的b2按钮
1.利用b2按钮 按下松开时(released)信号,b1按钮使用槽函数(hide)隐藏
widget.cpp中
#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("我的第一个按钮");
b1.move(100,100);
connect(&b1,&QPushButton::pressed,this,&Widget::close);
b2.setParent(this);//每个按钮都需要指定父对象
b2.setText("隐藏");//设置b2按钮标题
/*&b2:信号发送者
&QPushButton::released :信号(信号处理者) 格式:&发送者的类名::信号名
&b1:信号接收者
&QPushButton::hide :槽(信号处理函数) 格式:&接受者的类名::槽函数名
*/
connect(&b2,&QPushButton::released,&b1,&QPushButton::hide);
}
Widget::~Widget()
{
}
运行可以得到两个按钮:
点击隐藏按钮后,我的第一个按钮会被隐藏掉:
总结:
1.&b2表示信号的发送者,&QPushButton表示发送者的类名,released表示信号名(鼠标松开时触发)
2.&b1表示信号的接受者,&QPushButton表示接受者的类名,hide表示槽函数(hide起隐藏作用)