QT基础知识快速过

307 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1 创建自己的类

(例如pushbutton继承Qpushbutton)三处要改:

  1. 头文件改为QPushButton(h文件中)
  2. 继承的父亲 QPushButton(h文件中)
  3. 继承的父亲 QPushButton(c文件中)

2 (信号和槽)

新建student和teacher类,默认继承的QObject类

  • 信号函数:自定义信号
  • 返回值void,只需声明,无需实现
  • 可以有参可以无参
  • 槽函数:public slots:
  • 返回值void,h文件声明,c文件实现

student中槽函数要在c文件中实现:

案例:下课老师饿,学生请吃饭。

主动触发关键字emit

下课触发 zt->hungry(),

通过连接触发学生的槽函数。

有参形式的触发:

按下下课按钮后触发事件:

创建下课按钮,按钮连接老师信号,老师信号连接学生信号

3 对话框

  1. ui创建Mainwindow,设置窗口上按钮
  2. 程序对按钮做信号和槽的连接
  3. 本例用lamba表达式(信号发射对象ui->actionnew(对应ui中新建按钮),信号触发,this接收(省略),lamba表达式实现槽函数功能)
  4. 模态对话框的创建:
    1. QDialog dlg(this);在窗口中创建
    2. 设置大小,并exec()阻塞
  1. 非模态对话框的创建:
    1. 用Qdialog创建在堆区(就是new一下)
    2. 设置大小,设置释放堆区的属性setAttribute(Qt::WA_DeleteOnClose)
    3. show()显示
  1. 错误、信息、警告、提问等对话框用Qmessage::(相应静态函数实现)
  2. 文件对话框

\

\

使用ui界面创建

点击actionnew,触发lamba表达式。

//对话框分为模态对话框和非模态对话框

//模态对话框(不可以对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作)

模态对话框的创建

1创建一个对话框,(this)在窗口显示;2 阻塞一下,不然窗口会一闪而过

非模态对话框

创建到堆区就是非模态对话框,模态对话框的显示需要show

其它:

4 菜单栏、分隔符、工具栏、状态栏、铆接(浮动窗口)部件

5 添加资源文件

设置图标用Icon:

右键,open in editor,编辑资源,添加前缀,添加文件,使用“:+前缀名+文件名”

6 ui使用

登录界面,设置ui

窗口固定的选择

7 控件

\

单选框QradioButton

多选框QcheckBox

QListWidget

树形控件QTreeWidget

  1. 设置水平头setHeaderLabels(QStringList)
  2. 定义QTreeWidgetItem*
  3. addTopLevelItem(2的item)
  4. 追加子节点

表格控件tableWidget

  1. 设置列数
  2. 设置表头
  3. 设置行数
  4. 写正文setItem------>QTableWidgetItem

\

8 自定义控件

新建设计师界面

两个控件放进去,做一个水平对齐如上。

程序调节控件功能,实现第一个控件加,第二个控件移动;第二个控件移动,第一个控件加。

然后转入设计师界面,创建一个QWidget(空的窗体),右键提升窗口部件

填写后,添加并提升。

9 鼠标事件

实现鼠标移入标签范围内,输出鼠标进入,离开输出鼠标离开。

新建mylabel类继承Qlabel,要修改的要点见第一条;

利用第八条自定义控件的方法,将label提升为mylabel;

创建事件函数,包含QEvent头文件;

点c文件中,写事件函数

主窗口ui->setupui(this);结束。

10 定时器、事件分发器、事件过滤器、绘图、文件读写、文件信息读取

\

绘图

绘图设备