目录
简介
Qt零基础学习第一天,day day up up!
Qt下载链接:Index of /archive/qt
Qt基础
1.main函数必须包含
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//代码
return a.exec();
}
否则无法运行
函数首先创建一个QApplication类的对象,执行结束前调用QApplication对象的exec()函数
2.代码分析
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
//MainWindow自定义的类,继承自QMainWindow主窗口类
//所以MainWindow也是一个主窗口类
//w是MainWindow类实例化出的对象,表示一个主窗口
w.show(); //通过show()方式调用w窗口,一般Qt提供的组件都是隐藏的
return a.exec();
}
3.MainWindow类
MainWindow类由Q_OBJECT、构造函数和析构函数组成
3.1.Q_OBJECT本质是一个已定义好的宏,所有需要“信号和槽”功能的组件都必须将Q_OBJECT作为private属性成员引入到类中。
3.2.带参的构造函数:QWidget是所有组件的基类,借助parent指针,可以为当前窗口指定父窗口。
3.3.Qt中每个控件类(所有可视化元素)都直接或间接的继承自QWidget类。可以直接使用,也可以通过继承某个控件类的方式自定义一个新的控件。
4.Qt控件
QMainWindow类生成的窗口自带菜单栏、工具栏和状态栏,中央区域还可以添加多个控件,常用来作为应用程序的主窗口(主窗口)
QDialog类生成的窗口非常简单,没有菜单栏、工具栏和状态栏,但可以添加多个控件,常用来制作对话框(提示信息的对话框)
QWidget类既可以制作窗口,也可以作为某个窗口上的控件(主窗口、控件)
5.Qt事件
一个Qt界面程序要接收事件,main()函数中就必须调用exec()函数,它的功能是使程序能够持续不断地接收各种事件。
每接收一个事件,Qt会分派给相应的事件处理函数来处理。
事件处理函数:a.修改控件的某些属性 b.运用信号和槽机制处理事件
6.信号和槽机制详解
6.1.用户和控件的每次交互过程称为一个事件
6.2.所有控件都有接收信号的能力,一个控件可以接收多个不同的信号。对于每一个信号控件都会做出响应动作,称为槽。
6.3.信号函数和槽函数通常位于某个类中,其特别之处在于:
6.3.1.信号函数用signals关键字修饰,槽函数用public slots、protected slots或者private slots修饰
6.3.2.信号函数只需要声明,不需要定义(实现),而槽函数需要定义(实现)
6.4.信号和槽机制只满足于以下两个条件的控件:
6.4.1.控件类必须直接或者间接继承自QObject类,Qt常用类继承关系如下(待补充)
6.4.2.控件类中必须包含privat属性的Q_OBJECT宏
6.5.将信号函数和槽函数连接起来需要借助QObject类提供的connect()函数
eg:
QPushButton But("按钮控件",&widget); //定义一个位于widget中的按钮
But.setGeometry(10,10,100,50); //设置按钮的位置和尺寸
QObject::connect(&But,&QPushButton::clicked,&widget,&QWidget::close);
//信号与槽,实现当用户点击按钮时,widget窗口关闭
信号发送者是But按钮对象,要发送的信号是“按钮被点击”,用QPushButton类提供的clicked()信号函数表示
信号接收者是widget主窗口对象,“窗口关闭”作为信号对应的槽,可以用QWidget类提供的close()函数表示
6.5.1.connect()函数指定信号函数和槽函数的语法格式是&+函数所在类+函数名
6.5.2.一个connect()函数只能关联一个信号函数和一个槽函数,程序中可以包含多个connect()函数,以此实现:
a.关联多个信号函数和多个槽函数
b.一个信号函数可以关联多个槽函数,当信号发出时,槽函数会一个一个执行,但随机
c.多个信号函数可以关联同一个槽函数,无论哪个信号函数发出,槽函数都会执行
d.connect()函数的method参数还可以指定一个信号函数并发,当信号发出时会随之发出另一个信号