基础概念和基本问题
UI
指我们设计的图形界面的整体。
如何在控制台输出?
在QT中使用qDebug()函数,进行输出,QString是QT中的字符串变量类型。
控件
控件就是能完成某种特定的功能的模块,在使用之前,建议根据相应的功能进行改名。
信号与槽
信号:由控件发出的特定的信号(状态发生改变时,就发出信号),类似于触发函数。 如Pushbutton控件
void clicked(bool checked=false);
void pressed();
void released();
void toggled(bool checked);
槽:就是槽函数的意思,我们可以把槽函数绑定在某一个控件的信号上,类似于回调函数。
关联信号与槽
自动关联:
在ui文件中进行关联,仅用于可见的控件。 使用方法:直接选择相应的控件,右键菜单选中“转到槽”,自动关联会给我们的工程自动添加:
- 控件的头文件中的槽声明(私有或是共有)
- 控件对应cpp文件中的槽函数定义框架(就是函数的定义)
class UI{
private slots{
void 槽函数()
};
手动关联
手动关联可以用于可见的控件,也可以用于不可见的控件。 使用方法:使用connect函数:
connect(bt,SIGNAL(clicked()),this,SLOT(Bt_clicked_slot()));
解释:当bt对象发出信号clicked()的时候,就会触发对象this的槽函数Bt_clicked_slot()。
给界面添加图片
给QT工程添加图片:
第一步:给工程中添加图片文件
- 添加资源文件(Resources)
- 点开Resources文件夹下的plc.qrc
- 将目标图片文件放入到qt工程路径下
- 在保存后,选择添加-添加文件,选中目标图片
第二步:使用qLabel控件
- 去除qLabel中的文字
- 右键菜单中选中“改变样式表”
- 点击弹出的新窗口中的添加资源右侧的小三角,选中“border-Image”
- 在新窗口中点击<resource root>
- 选择右侧的图片即可在qLabel中显示图片
注意
- 不仅仅可以在qLabel中添加图片,也可以在诸如按钮控件中添加图片。
- 添加图片的方式也是“改变样式表”…(就是第二步中的2.开始的内容)
界面布局
界面布局的三种方式
??在不同大小的屏幕,或者窗口可变的窗口中运行时,如何保证控件的位置能够自动调整?这就会用到界面布局。 ??qt下的三种布局:(箭头不表示顺序关系,仅仅展示相对位置)
- 水平布局
- 垂直布局
- 栅格布局
栅格布局结合了水平布局和垂直布局,就是写完一行再换下一行。
sq1
sq2
sq3
...
sq5
sq6
sq7
...
如何设置界面布局?
- 选中多个要保持同一种布局的控件,然后点击UI上方的布局按钮。
- 布局的本质就是将多个控件进行相关位置的约束,并且对外视作一个整体。因此布局是可以嵌套的,比如可以让几个水平布局的控件组,相互进行垂直布局。
- 在布局时,如果涉及大小可以为零的情况,那么会导致控件消失,应该提前规定好控件的最小尺寸(minimum size)。
- 合理利用弹簧(spacers)。在最外侧的四周可以添加四个弹簧,然后和中心的主要控件组设置栅格布局,就可以在窗口拉伸时保持相对位置。
- 如果想重新设计相关布局,那么可以使用上方的打破布局。
- 布局不会影响到h文件和cpp文件。
界面切换
当我们希望点击某些按钮后,出现另一个界面,如何实现?
创建新的UI文件
- 点击工程文件,右键点击添加新文件,选择Qt设计师界面类
- 选择界面模板分类(widget等)
- 设置类的相关参数(类名等),然后添加到项目即可。
设置相关调用逻辑
- 在主UI界面的cpp文件中引用新UI文件的头文件
- 的槽函数中设置相关的调用逻辑;不妨令新UI类为ctrl,头文件同名
#include"ctrl.h"
void func()
{
ctrl *ct = new ctrl;
ct->setGeometry(this->geometry());
ct->show();
}
|