c# 系列文章目录
文章目录
- 布局控件
- 信号与槽
- 第二种connect
- 程序图标
- 使用技巧
布局控件
美化界面的时候,经常需要进行一些控件的布局,这时需要使用一些容器类。
在快捷栏出,也有一些布局设计的选择
如上图,其中涉及到几种编辑状态:
1.Edit Widget:正常界面设计状态
2.Edit Signals/Slots:可视化信号与槽界面(这种方法的connect在ui_xxxxx.h文件中见下文)
3.Edit Buddies:伙伴关系,将Lable与一个组件建立伙伴关系,这样Lable的快捷键就绑定在该组件上了。
用下图设置快捷键:界面不显示&,用户按下Alt+A就行了
输入就会切换到后面的输入框
4.Edit Tab Order:进入Tab顺序组件编号状态,在运行时,按下Tab就会切换,我只是测试了Line Edit,可以用的
信号与槽
信号:特定的触发事件。
槽:对应信号的函数。
将槽函数与信号关联之后,当信号产生的时候,槽函数将自动执行。
QObject::connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
connect() 是一个静态函数(不会修改对象的数据成员),实际调用时不需要加QObject::,它是Qt类的基类,四个参数分别是:发送信号的对象名称、信号、接收信号的对象名称、槽函数。
要点:
1.一个信号可以连接多个槽函数
2.多个信号可以连接一个槽函数
3.一个信号连接到另外一个信号,实现一个信号发生时,另外一个也会发生
4.严格情况,信号与槽的参数个数和类型需要一致,可能会报错
5.信号发生后,会立马执行槽函数,执行完毕后才会执行发射信号后面的代码
6.使用信号与槽的类中,必须在类的定义中加入宏Q_OBJECT
如何建立:一般对一个控件直接鼠标右键,选择转到槽就可以选择我们需要的信号与槽函数
可以看到,代码中会自动生成槽函数,该槽的信号是按钮的点击。
这里不需要手动进行connect,这是因为在编译生成的ui_xxxxxx.h文件中,有:
QMetaObject::connectSlotsByName(MainWindow);
这个函数将搜索界面上的所有控件,将信号与槽关联起来,他是根据函数命名进行关联的,它搜索槽函数的规则是:
void on_<object name>_<signal name>(<signal parameters>);
所以当我们编写一个槽函数或者自动生成的槽函数:
它就会判断是pushButton对象的clicked信号的槽函数,并且将此与控件的信号进行关联,这也是UI设计可视化的一个便捷之处。当然如果我们不按照这个格式写,就要自己手动connect了。
第二种connect
对于具有默认参数的信号与槽(即信号名称是唯一的,没有参数不同而信号同名的情况),可以使用函数指针进行关联:
例如:
connect(lineEdit,&QLineEdit::textChanged,this,&widget::on_textChanged);
QLineEdit只有一个信号textChanged(QString),在自定义窗体类Widget里面定义一个槽函数on_textChanged(QString),就可以利用上面的程序进行关联,无需出现函数参数。
程序图标
1.将图标文件.ico复制到项目的源程序目录下
2.在.pro的项目配置文件中设置:RC_ICONS = xxxxx.ico
使用技巧
Shift+F2:在函数原型和函数定义之间切换
Ctrl+Shift+R:同名全部替换
Ctrl+I:自动缩进
Ctrl+/:注释/取消注释
多用Help帮助系统,若需要查看类的继承关系,访问“Inheritance Hierarchy”