Fork me on GitHub

C++GUI Programming with QT学习笔记day04


创建Qt项目

选择基类有三个选项

  • QMainWindow          #带菜单栏的,主要是在PC下使用
  • QWidget            # 空白窗口
  • QDialog            # 对话框

Qt4与Qt5信号与槽机制的区别

1
2
Qt4: QObject::connect(button,SIGNAL(clicked()),this,SLOT(quit()));
Qt5: connect(button,&QPushButton::clicked,this,&QWidget::close);

自定义槽函数

  1. 在Qt4里面,自定义槽函数只能放在public slots下面
  2. 在Qt5里面,没有那么严格,普通的成员函数或者全局函数,静态函数都可以作为槽函数。
  3. 在Qt5里面,槽函数还可以是lambda匿名函数表达式
1
2
3
4
5
connect(button,&QPushButton::clicked,
[]()
{
}
)

[]的作用是把外部变量传进来

1
2
3
4
[b4]()
{

}

  • [=]: 把外部所有局部变量,类中所有成员通过值传递方式,默认为只读
  • [&]: 把外部所有局部变量,通过址传递
  • [this]: 类中所有成员以值传递方式

Qt头文件没有.h
头文件和类名一样

Qt项目文件

.pro

1
2
3
4
5
6
7
8
9
10
# 模块
QT       += core gui
# 高于4版本,添加QT+=widgets,为了兼容Qt4
greaterThan(QT_MAJOR_VERSION,4):QT +=widgets
# 应用程序的名字
TARGET= mike
# 指定makefile的类型,app|lib
TEMPLATE = app
# 源文件
SOURCE += main.cpp\

自定义槽,普通函数的用法
Qt5: 任意的成员函数,普通全局函数,静态函数
槽函数需要和信号一致(参数,返回值)
由于信号都是没有返回值的,所以,槽函数一定没有返回值
信号的参数可以多于槽,但槽的参数不能多于信号的参数

注意:引用lambda表达式时,需要在项目文件中末尾添加CONFIG += C++11

Qt样式表

1
2
3
ui->label->setStyleSheet("QLabel{"
"color:red;"
"background-color:black}");

布局

  • 局部布局

    选中要局部布局的部件进行勾选

  • 全局布局

注意:
先局部布局,再全局布局
布局时,借用容器来分成多个模块

使用自定义控件时,在需要的地方,右击提升为,选择自己写的部件类。

提升为.png

坚持原创技术分享,您的支持将鼓励我继续创作
-------------本文结束感谢您的阅读-------------
0%