目录
简要:
继承关系【QObject --> QWidget】,可视化控件的基类,是一个空白的控件(故常作为窗口控件) 作为Qt可视化控件的最重要基类,是我们要首先着重学习的,因为其的方法、属性在其子类都是可以用到的
可视化控件位置大小:
位置/大小:
注意: 1. 只有在可视化控件显示完毕后再进行位置获取,其具体的位置信息或尺寸数据才会正确。同时只有再显示之后在进行设置位置才会确保正确。 2. 如果有子控件,子控件的设置务必要在父控件的展示前设置好,否则子控件将无法展示出来。 位置大小控制方法: move(x,y): 设置整个控件框架(外框架和内容区域)的相对位置 x:到父控件左上角的横向距离 y:到父控件左上角的纵向距离 resize(width,height): 设置窗口内容区域的大小 width:内容区域的宽度 height:内容区域的高度 setGeometry(content_x,content_y,width,hieght) 设置控件位置和大小 content_x:内容区域相对父控件左上角的横向距离 content_y:内容区域相对父控件左上角的纵向距离 width:内容区域的宽度 height:内容区域的高度 adjustSize(): 根据内容自适应大小 setFixedSize(): 设置固定的尺寸大小(控件尺寸不支持拉拽变化) 最小最大尺寸 前言:是对于内容区域来说的尺寸 minimumWidth/maximumWidth(): 获取最小/最大宽度尺寸 minimumHeight/maximumHeight(): 获取最小/最大高度尺寸 minimumSize/maximumSize(): 获取最小/最大尺寸 setMinimumWidth/setMaximumWidth(): 设置最小/最大宽度尺寸 setMinimumHeight/setMaximumHeight(): 设置最小/最大高度尺寸 setMinimumSize/setMaximumSize(): 设置最小/最大尺寸
内容边距:
setContentsMargins(left,top,right,bottom) 设置控件的内容边距(类似于css的padding) getContentsMargins() 获取控件的内容边距,返回tuple类型
鼠标相关:
1. 设置鼠标形状: setCursor(enum_param) Qt.ArrowCursor:箭头型 Qt.PointingHandCursor:指手型 2. 取消鼠标设置 unsetCursor() 3. 获取鼠标对象 cursor() 4. 自定义鼠标对象 QCursor(QPixmap(img_str)) QPixmap(img_str):像素图对象,可传入图片的路径字符串 pixmap.scale(width,height):设置像素图的大小 pos():获取鼠标对象位置 setPos():设置鼠标对象位置 pixmap():获取鼠标对象的像素图 5. 鼠标轨迹跟踪实现 需要自定义组件重写控件的mouseMoveEvent(QMouseEvent)方法,然后调用setMouseTracking(True)开启鼠标轨迹跟踪 hasMouseTracking(): 判断是否有跟踪鼠标轨迹 mouseMoveEvent(QMouseEvent) QMouseEvent接收鼠标移动事件对象 QMouseEvent.globalPos():返回一个全局的QPoint对象(相对于电脑屏幕) QMouseEvent.localPos():返回一个局部的QPoint对象(相对于内容区域) QMouseEvent.localPos()/globalPos().x()/y() 获取QPoint对象的x偏移量 获取QPoint对象的y偏移量
事件:
窗口事件: showEvent(QShowEvent):负责监听接收窗口展示的事件消息 closeEvent(QCloseEvent):负责监听接收窗口关闭的事件消息 moveEvent(QMoveEvent):负责监听接收窗口移动(窗口左上角位置改变)的事件消息 resizeEvent(QResizeEvent):负责监听接收窗口大小调节的事件消息 鼠标事件: enterEvent(QEvent) 鼠标进入事件 leaveEvent(QEvent) 鼠标退出事件 mousePressEventEvent(QMouseEvent) 鼠标按下事件 mouseReleaseEvent(QMouseEvent) 鼠标释放事件 mouseDoubleClickEvent(QMouseEvent) 鼠标双击事件 mouseMoveEvent(QMouseEvent) 鼠标按下后移动事件 设置setMouseTracking(True) 后鼠标不按下也能触发移动事件 键盘事件 keyPressEvent(QKeyEvent): 键盘按下事件 keyReleaseEvent(QKeyEvent): 键盘释放事件 QKeyEvent.text() 获取键盘的字符 焦点事件 focusInEvent(QFocusEvent): 获取焦点事件 focusOutEvent(QFocusEvent) 失去焦点事件 拖拽事件 dragEnterEvent(QDragEnterEvent) 拖拽进入控件事件 dragLeaveEvent(QDragLeaveEvent) 拖拽离开控件事件 dragMoveEvent(QDragMoveEvent) 拖拽在控件内移动事件 dropEvent(QDropEvent) 拖拽放下事件 绘制事件 paintEvent(QPaintEvent) 显示控件,更新控件时调用(控件在界面显示都要用到绘制事件) 改变事件 changeEvent(QEvent) 窗体改变、字体改变时调用 右键菜单 contextMenuEvent(QContextMenuEvent) 访问右键菜单时调用 补充: 事件转发:子控件的事件未处理被转发到父控件进行处理(逐级向上层类对象转发) evt.accept():事件接受(自己处理此事件,不向上层转发) evt.ignore():事件忽略(自己不处理此事件,使事件向父对象转发)
父子关系:
ChildAt(x,y): 获取指定坐标所属的子控件 ParentAt(x,y): 获取控件的父控件 childrenRect(): 获取所有子控件所在的矩形区域范围
层级控制:
简要:可视化控件的图层显示有前后之分,是第三维度z轴位置的不同 同级控件层级调整 lower(): 将控件置于底层 raise_(): 将控件置于顶层 aWidget.stackUnder(bWidget) 将aWidget放在bWidget下
顶层窗口相关:
setWindowIcon(QIcon(img_str)): 设置窗口图标 setWindowTiltle(str): 设置窗口标题 setWindowOpacity(float): 设置不透明度 setWindowState(state): 设置窗口状态 Qt.WindowMaximized 最大化 Qt.WindowMinimized 最小化 showFullScreen() showMaximized() showMinimized() showNormal() setWindowFlags(Qt.WindowStaysOnTopHint) Qt.FramelessWindowHint:窗口无边框 Qt.WindowStaysOnTopHint:窗口始终置于顶层 Qt.WindowStaysOnBottomHint:窗口始终置于底层 close/showMinimized/showMaximized:窗口关闭/最小化/最大化
控件状态:
是否可用: setEnabled(bool):控件(包括其子控件)不可用 isEnabled() --> bool 是否显示/隐藏: setVisible(bool):是否设置可见 setHidden(bool):是否设置隐藏 isVisible() --> bool:控件状态是否可见 isHidden() --> bool:相对于父控件是否是不可见的 show():展示控件 hide():隐藏控件 isVisibleTo(widget):相对于某控件是否可见 是否编辑: 文件正在编辑状态表示:标题[*] 或者 [*]标题 (str_tiltle) setWindowModified(bool):是否设置编辑 isWindowModified() --> bool 活跃窗口: 简要:多个窗口中与用户正处于交互状态的窗口 activateWindow():设置为活跃窗口 isActivateWindow() --> bool 窗口关闭: close():关闭控件(控件将不会被绘制展示) setAttribute(Qt.WA_DeleteOnClose,True): 在close前设置该属性后,当控件关闭后,控件将被删除
信息提示:
状态栏提示: setStatusTip(str):设置状态栏提示,当鼠标悬停在控件上提示文本将会在状态栏显示 statusTip() --> str 使用状态栏(以QMainWindow举例):window.statusBar() 工具提示: setToolTip(str):当鼠标悬停在控件上一会而后,提示文本将在控件的周围显示 toolTip() --> str setToolTipDuration(msc):设置提示文本显示的毫秒数 这是啥提示: setWhatsThis(str):与鼠标状态(这是啥)结合使用,当鼠标处于该状态下且点击控件时显示提示文本 whatsThis(str)
焦点控制:
setFocus():指定控件设置焦点 setFocusPolicy(Policy): 设置焦点获取策略 Policy: Qt.TabFocus:通过tab键获取焦点 Qt.ClickFocus:通过被单击获取焦点 Qt.StrongFocus:可通过上面两种方式获取焦点 Qt.NoFocus:不可通过上面两种方式获取焦点 clearFocus(): 清理焦点 focusWidget(): 获取子控件中当前聚焦的控件 focusNextChild(): 获取下一个聚焦子控件 focusPreviousChild(): 获取前一个聚焦子控件 focusNextPrevChild(bool): True:获取下一个 False:获取前一个 setTabOrder(pre_widget,next_widget): 设置子控件获取焦点的顺序
信号:
windowTitleChanged(QString): 窗口标题发生改变信号 windowIconChange(QIcon): 窗口图标改变信号 setContextMenuPolicy(Qt.CustomContextMenu) 简要:上下文菜单,仅当所属控件被右键时才会进行事件监听(内机制) Qt.DefaultContextMenu: 默认上下文菜单菜单选项 --> 会调用对象的contextMenuEvent(QContextMenuEvent)方法 可以重写该方法来处理 Qt.CustomContextMenu: 自定义上下文菜单值 --> 会发射信号customContextMenuRequested 该信号会将传QPoint实例参数(局部点),我们可以通过槽函数(接受该QPoint参数)处理 可以通过window.mapToGlobal(QPoint)映射到“全局点” 不调用该方法进行指定,默认为第一个选项:Qt.DefaultContextMenu
以上就是QWidget的基本用法了。欢迎留言反馈。