QT学习笔记1:基本概念与基本问题

基础概念和基本问题

UI

指我们设计的图形界面的整体。

如何在控制台输出?

在QT中使用qDebug()函数,进行输出,QString是QT中的字符串变量类型。

控件

控件就是能完成某种特定的功能的模块,在使用之前,建议根据相应的功能进行改名。

信号与槽

信号:由控件发出的特定的信号(状态发生改变时,就发出信号),类似于触发函数。
如Pushbutton控件

//按钮的信号
void clicked(bool checked=false);
void pressed();
void released();
void toggled(bool checked);

槽:就是槽函数的意思,我们可以把槽函数绑定在某一个控件的信号上,类似于回调函数。

关联信号与槽

自动关联:

在ui文件中进行关联,仅用于可见的控件。
使用方法:直接选择相应的控件,右键菜单选中“转到槽”,自动关联会给我们的工程自动添加:

  1. 控件的头文件中的槽声明(私有或是共有)
  2. 控件对应cpp文件中的槽函数定义框架(就是函数的定义)
class UI{
//some 声明
//槽函数只能声明到 public slot或者private slot
private slots{
	void 槽函数()
};
手动关联

手动关联可以用于可见的控件,也可以用于不可见的控件。
使用方法:使用connect函数:

//在UI的cpp文件中的建构函数中使用connect函数
//假设构造的UI是ui,信号是pushButton的clicked()
//槽函数为(自己要先在h文件中声明)Bt_clicked_slot()
//注意,调用函数指针不同的是,这里的两个函数是要带上()。
connect(bt,SIGNAL(clicked()),this,SLOT(Bt_clicked_slot()));

解释:当bt对象发出信号clicked()的时候,就会触发对象this的槽函数Bt_clicked_slot()。

给界面添加图片

给QT工程添加图片:

第一步:给工程中添加图片文件

  1. 添加资源文件(Resources)
  2. 点开Resources文件夹下的plc.qrc
  3. 将目标图片文件放入到qt工程路径下
  4. 在保存后,选择添加-添加文件,选中目标图片

第二步:使用qLabel控件

  1. 去除qLabel中的文字
  2. 右键菜单中选中“改变样式表”
  3. 点击弹出的新窗口中的添加资源右侧的小三角,选中“border-Image”
  4. 在新窗口中点击<resource root>
  5. 选择右侧的图片即可在qLabel中显示图片

注意

  1. 不仅仅可以在qLabel中添加图片,也可以在诸如按钮控件中添加图片。
  2. 添加图片的方式也是“改变样式表”…(就是第二步中的2.开始的内容)

界面布局

界面布局的三种方式

  在不同大小的屏幕,或者窗口可变的窗口中运行时,如何保证控件的位置能够自动调整?这就会用到界面布局。
  qt下的三种布局:(箭头不表示顺序关系,仅仅展示相对位置)

  1. 水平布局
sq1
sq2
sq3
...
  1. 垂直布局
sq1
sq2
sq3
...
  1. 栅格布局
    栅格布局结合了水平布局和垂直布局,就是写完一行再换下一行。
sq1
sq2
sq3
...
sq5
sq6
sq7
...

如何设置界面布局?

  1. 选中多个要保持同一种布局的控件,然后点击UI上方的布局按钮。
  2. 布局的本质就是将多个控件进行相关位置的约束,并且对外视作一个整体。因此布局是可以嵌套的,比如可以让几个水平布局的控件组,相互进行垂直布局。
  3. 在布局时,如果涉及大小可以为零的情况,那么会导致控件消失,应该提前规定好控件的最小尺寸(minimum size)。
  4. 合理利用弹簧(spacers)。在最外侧的四周可以添加四个弹簧,然后和中心的主要控件组设置栅格布局,就可以在窗口拉伸时保持相对位置。
  5. 如果想重新设计相关布局,那么可以使用上方的打破布局。
  6. 布局不会影响到h文件和cpp文件。

界面切换

当我们希望点击某些按钮后,出现另一个界面,如何实现?

创建新的UI文件

  1. 点击工程文件,右键点击添加新文件,选择Qt设计师界面类
  2. 选择界面模板分类(widget等)
  3. 设置类的相关参数(类名等),然后添加到项目即可。

设置相关调用逻辑

  1. 在主UI界面的cpp文件中引用新UI文件的头文件
  2. 的槽函数中设置相关的调用逻辑;不妨令新UI类为ctrl,头文件同名
//调用新UI的头文件
#include"ctrl.h"

//在某些槽函数中设置调用逻辑
void func()
{
	ctrl *ct = new ctrl;//实例化新对象
	//设置新窗口对象的几何属性,如长宽高。这里是复制本窗体的属性。
	ct->setGeometry(this->geometry());
	ct->show();
	//this->close();//窗体的关闭方法,可以在窗体的相关页面进行查看
	//ui->userEdit->text();//获取窗体ui下的控件userEdit的文本内容的方法,是控件lineEdit类的方法
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值