Qt学习笔记——界面文件的使用

一、界面文件的使用

1、独立的ui文件

使用uic命令把ui文件编译成.h文件,uic xxx.ui -o xxx.h

2、在集成开发环境中使用

1、Qt构造器会把xxx.ui文件生成 ui_xxx.h 文件,且会有一个xxx.h xxx.cpp文件。
2、ui_xxx.h文件中有一个Ui_xxx类,类中的成员就是ui文件中所画的控件,成员setupUi函数,负责设置控件的位置、大小等相关属性。
3、Ui_xxx会被Ui名字空间中的xxx类继承。
4、xxx.h文件中虽然没有导入ui_xxx.h文件,但声明了Ui名字空间,且定义了xxx类,然后类中有一个叫ui的成员,它是Ui名字空间中的xxx类(继承了Ui_xxx类)。
5、ui成员在xxx类的构造函数的初始化列表中被创建,在构造函数中调用它的setupUi。
6、在之后的代码中如果想进行设置xxx.ui成员,ui->控件名.成员函数 进行设置。

二、信号和槽

1、信号
当Qt中的控件发生变化(放大、缩小、移动、单击),控件就会发出一个信号,这种信号可以与一种特殊的函数建立联系,当信号触发时会自动调用函数(必要时还可以附带参数),也可以使用emit 手动触发。
QPushButton 控件常用的信号是 clicked(void) 信号

2、槽
就是一种特殊的类成员函数,可以是公有的、私有的、保护的,可以被重载也可以被覆盖,其参数、返回值可以是任何类型,也可以被直接调用,唯一普通函数不同的是,它可以与信号建立连接,被信号触发调用。
窗口控件常用的槽函数有 void hide()、void show()、void close()

3、信号与槽的连接
bool connect(
    const QObject * sender,信号发送者地址
    const char * signal, 信号签名字符串
    const QObject * receiver, 信号接收者地址
    const char * method); 槽函数签名字符串
    SIGANL(信号) 把信号转换成签名字符串
    SLOT(槽函数) 把槽函数转换成签名字符串

注意:在连接信号和槽时,不要手动编写信号和槽,而是要使用自动提示,因为SIGANL、SLOT不会检查信号和槽的语法是否正确。

三、常用控件以及常用操作

QLabel:标签控件,用于显示简单的提示性文本。
    setText 设置要显示的内容
    text 获取标签上显示的字符串,返回值QString
QPushButton:按钮控件
    同样具有 setText text,还有禁用、起用等设置。
    但它最常用的功能是 单击、双击、悬停、按下、弹起等信号。
QRadioButton:单选按钮控件
    同一个窗口中,只能有一个单选按钮被选中。
QLineEdit:单选输入文本框
    最常用的操作就是获取它输入的内容。
    可以设置为只读,对齐方式,显示模式。
QTextEdit:多行输入文本框
    常用于输入大段文字,输入的内存可以换行,自动滚动条。
QComboBox:下拉选择框
    常用操作是添加候选词,获取选择的文本,选择被改变的信号。
QxxxSlider:水平,垂直滑块,
    常用操作是设置最大值,最小值,当前值,步长。
QxxxSpinBox:数据输入框
    常用操作是设置最大值,最小值,当前值,步长。
QTextBrower:多行文本显示框,支持富文本显示。
    设置个别文字的字号、字体、加粗、倾斜、下划线、对齐方式、插入超链接、插入图片、设置字体颜色行等。

四、自定义信号和槽

1、定义信号和槽必须在类中。
2、自定义信号和槽的类必须继承QObject,由于QObject是Qt所有类的源头,因此只需要继承了Qt中的类即可。
3、在类的开头写上 Q_OBJECT 没有分号,并且些标识符必须在项目构建之前写,如果项目编译后出现语法错误后再添加此标识符,必须删除所有构造器自动生成的文件,使用qmake -project重新构建此项目。
4、信号定义,必须定义在signals关键字下面,格式相当于函数声明,没有返回值,但可以有参数,参数会在信号触发时传递给槽函数。
    注意:自定义的信号,无法通过行为触发,只能使用emit手动命令触发。
    signals:
        void 信号名(参数);  
5、自定义的槽函数要写在 public/private/protected slots 下面,像实现普通成员函数一样,先声明,后定义。
6、多个信号可以连接一个槽函数,只要有任意一个信号触发就会执行槽函数。
7、在集成开发环境中的界面设计时,可以自动创建槽函数并连接,槽函数的名字由控件名+信号自动生成。
    选中控制->右击->转到槽 会在xxx.ui文件对应的xxx.cpp xxx.h文件中自动声明、定义槽函数。

五、事件

当用户做出某些操作时,控件也要作出相就反应,这种操作就叫作事件。
事件是以多态形式实现的,Qt中的类有些什么都不做的虚函数,当事件发生如果没有覆盖,则调用虚函数,如果虚函数被覆盖,则调用子类的函数。
常用的事件:
void keyPressEvent(QKeyEvent *event);
键盘按下事件,方向键不会触发该事件。
QKeyEvent 的text成员函数可以获取按键的名字,一些特殊的键是没有名字的,key成员函数可以获取按键的键值,Qt中的Key枚举键定义了这些键的枚举值。

void keyReleaseEvent(QKeyEvent *event);
键盘弹起出事,方向键会触发该事件。

void mousePressEvent(QMouseEvent *event);
鼠标按下事件

void mouseReleaseEvent(QMouseEvent *event);
鼠标弹起事件

void mouseDoubleClickEvent(QMouseEvent *event);
鼠标双击事件,同时也会触发一次单击事件。

void mouseMoveEvent(QMouseEvent *event);
鼠标按下并移动事件
QMouseEvent的button成员函数可以获取到鼠标的键值,x,y成员函数可以获取按下的位置。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页