本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1 创建自己的类
(例如pushbutton继承Qpushbutton)三处要改:
- 头文件改为QPushButton(h文件中)
- 继承的父亲 QPushButton(h文件中)
- 继承的父亲 QPushButton(c文件中)
2 (信号和槽)
新建student和teacher类,默认继承的QObject类
- 信号函数:自定义信号
- 返回值void,只需声明,无需实现
- 可以有参可以无参
- 槽函数:public slots:
- 返回值void,h文件声明,c文件实现
student中槽函数要在c文件中实现:
案例:下课老师饿,学生请吃饭。
主动触发关键字emit
下课触发 zt->hungry(),
通过连接触发学生的槽函数。
有参形式的触发:
按下下课按钮后触发事件:
创建下课按钮,按钮连接老师信号,老师信号连接学生信号
3 对话框
- ui创建Mainwindow,设置窗口上按钮
- 程序对按钮做信号和槽的连接
- 本例用lamba表达式(信号发射对象ui->actionnew(对应ui中新建按钮),信号触发,this接收(省略),lamba表达式实现槽函数功能)
- 模态对话框的创建:
-
- QDialog dlg(this);在窗口中创建
- 设置大小,并exec()阻塞
- 非模态对话框的创建:
-
- 用Qdialog创建在堆区(就是new一下)
- 设置大小,设置释放堆区的属性setAttribute(Qt::WA_DeleteOnClose)
- show()显示
- 错误、信息、警告、提问等对话框用Qmessage::(相应静态函数实现)
- 文件对话框
\
\
使用ui界面创建
点击actionnew,触发lamba表达式。
//对话框分为模态对话框和非模态对话框
//模态对话框(不可以对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作)
模态对话框的创建
1创建一个对话框,(this)在窗口显示;2 阻塞一下,不然窗口会一闪而过
非模态对话框
创建到堆区就是非模态对话框,模态对话框的显示需要show
其它:
4 菜单栏、分隔符、工具栏、状态栏、铆接(浮动窗口)部件
5 添加资源文件
设置图标用Icon:
右键,open in editor,编辑资源,添加前缀,添加文件,使用“:+前缀名+文件名”
6 ui使用
登录界面,设置ui
窗口固定的选择
7 控件
\
单选框QradioButton
多选框QcheckBox
QListWidget
树形控件QTreeWidget
- 设置水平头setHeaderLabels(QStringList)
- 定义QTreeWidgetItem*
- addTopLevelItem(2的item)
- 追加子节点
表格控件tableWidget
- 设置列数
- 设置表头
- 设置行数
- 写正文setItem------>QTableWidgetItem
\
8 自定义控件
新建设计师界面
两个控件放进去,做一个水平对齐如上。
程序调节控件功能,实现第一个控件加,第二个控件移动;第二个控件移动,第一个控件加。
然后转入设计师界面,创建一个QWidget(空的窗体),右键提升窗口部件
填写后,添加并提升。
9 鼠标事件
实现鼠标移入标签范围内,输出鼠标进入,离开输出鼠标离开。
新建mylabel类继承Qlabel,要修改的要点见第一条;
利用第八条自定义控件的方法,将label提升为mylabel;
创建事件函数,包含QEvent头文件;
点c文件中,写事件函数
主窗口ui->setupui(this);结束。
10 定时器、事件分发器、事件过滤器、绘图、文件读写、文件信息读取
\
绘图
绘图设备