一、parent参数
parent参数除了有之前父窗口的界面效果外,还体现了Qt的内存管理策略。parent参数的对象是当前创建的对象的父对象。因此在Qt中存在父对象与子对象的概念,需要注意的是,此处的父子关系与继承无关,至于parent参数有关。子对象会跟随父对象的销毁而销毁,子对象不需要手动delete。建议绝对多数情况下传递parent参数以防止内存泄漏。
二、自定义窗口类
在Qt项目中新创建一个自定义窗口类的操作步骤如下:
1. 选中项目名称,鼠标右键,点击“添加新文件”。
2. 在弹出的窗口中,按照下图所示进行操作。
三、窗口传参(对象传参)
1. 主窗口(父对象) → 子窗口(子对象)
2 子窗口(子对象)→ 主窗口(父对象)
四、事件
1 .机制
事件是Qt运行的底层逻辑,在程序运行的过程中是逐层传递,通常在Qt程序中由QApplication对象优先处理和分发。
以常见的用户操作事件为例,说明事件的传递机制。
2. 事件函数
通过覆盖保护权限的事件虚函数,起到回调函数的效果,常见的事件如下:
// 绘制事件函数
void QWidget::paintEvent(QPaintEvent * event) [virtual protected]
// 大小改变事件函数
void QWidget::resizeEvent(QResizeEvent * event) [virtual protected]
// 鼠标按压事件函数
void QWidget::mousePressEvent(QMouseEvent * event) [virtual protected]
// 鼠标释放事件函数
void QWidget::mouseReleaseEvent(QMouseEvent * event) [virtual protected]
// 鼠标双击事件函数
void QWidget::mouseDoubleClickEvent(QMouseEvent * event) [virtual protected]
// 鼠标指针移动事件函数
void QWidget::mouseMoveEvent(QMouseEvent * event) [virtual protected]
// 移动事件函数
void QWidget::moveEvent(QMoveEvent * event) [virtual protected]
// 按键按压事件函数
void QWidget::keyPressEvent(QKeyEvent * event) [virtual protected]
// 按键释放事件函数
void QWidget::keyReleaseEvent(QKeyEvent * event) [virtual protected]
// 获取焦点事件函数
void QWidget::focusInEvent(QFocusEvent * event) [virtual protected]
// 失去焦点事件函数
void QWidget::focusOutEvent(QFocusEvent * event) [virtual protected]
// 关闭事件函数
void QWidget::closeEvent(QCloseEvent * event) [virtual protected]
// 鼠标指针进入事件函数
void QWidget::enterEvent(QEvent * event) [virtual protected]
// 鼠标指针离开事件函数
void QWidget::leaveEvent(QEvent * event) [virtual protected]