QWidget

目录

简要:

可视化控件位置大小:

位置/大小:

内容边距:

鼠标相关:

事件:

父子关系:

层级控制:

顶层窗口相关:

控件状态:

信息提示:

焦点控制:

信号:


简要

继承关系【QObject --> QWidget】,可视化控件的基类,是一个空白的控件(故常作为窗口控件)
作为Qt可视化控件的最重要基类,是我们要首先着重学习的,因为其的方法、属性在其子类都是可以用到的

可视化控件位置大小

QWidget_第1张图片

 

位置/大小

注意: 
      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的基本用法了。欢迎留言反馈。 

你可能感兴趣的:(PyQt5,qt,ui,pyqt,开发语言,python)