QWidget Class解析

QWidget Class

QWidget是所有的用户接口的对象

  • qmake: QT += widgets
  • 继承:QObject 和 QPaintDevice
  • 派生:QAbstractButton, QAbstractSider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesktopWidget, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGroupBox, QKeySequenceEdit, QLineEdit, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget,
    QProcessBar, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QTabBar, QTabWidget, QToolbar, QWizardPage

Properties

  • bool acceptDrops: 控制是否允许窗体支持拖拽放置操作,默认情况下书false,不要在拖拽事件中修改这个属性;
  • QString accessibleDescription: 窗体的可访问的描述,描述了一个窗体应该传达出它的作用,这个参数应该是简单明了的,默认情况下是空QString;
  • QString accessibleName: 可以通过某些方法访问窗体的名字,默认情况下是空QString;
  • bool auto FillBackground: 控制窗体的背景是否自动填充,默认情况下是false;
  • QSize baseSize: 窗体的基本尺寸,用来计算窗体尺寸变化的基本尺寸,默认情况下,这个属性是高度0宽度0;
  • const QRect childrenRect: 窗体的子项的矩形的边界,默认情况下,如果没有子项,这个值是0;
  • const QRegion: 窗体的子项的合并的区域,默认情况下,如果没有子项,将返回空region;
  • Qt::ContextMenuPolicy contextMenuPoliy: 表示窗体如何展示菜单内容,目前不知道怎么用
  • QCursor cursor: 表示鼠标在窗体上的时候,光标如何显示,如果不指定的话,就显示父项的光标,默认情况下是Qt::ArrowCursor
  • bool enabled: 指定是否窗体是使能的,通常来说使能的意思是响应键盘和鼠标的事件,默认情况下是true
  • const bool focus: 指定窗体是否有键盘输入的聚焦,默认情况下是false
  • Qt::FocusPolicy: 指定窗体显示键盘聚焦的方式,有4种聚焦的方式,tab,click,strong(包含前面两者),还有wheel,如果该窗体需要接收窗体控件,就必须要设置聚焦
  • QFont font: 指定当前窗体的字体,子项如果没有显式的设置,会继承父项的字体
  • const QRect frameGeometry: 指定框架尺寸和位置
  • const QSize frameSize: 指定框架对的尺寸
  • const bool fullScreen: 指示是否窗体以全屏的方式显示,默认情况下是false,使用setWindowState()函数以异或^运算的方式来设置是否是全屏模式
  • QRect geometry: 表示窗体相对于其父项的几何形状,这个返回的是窗体的外轮廓,不是上面的框架的外轮廓,框架比窗体大
  • const int height: 表示窗体框架的高度
  • Qt::InputMethodHints inputMethodHints: 仅仅对于输入型的窗体有用,指定了指定的窗体输入的提示,但是还不知道有什么用
  • const bool isActiveWindow: 指示窗体是否是激活的窗体,激活的窗体是指有键盘聚焦的。
  • Qt::LayoutDirection layoutDirection: 指示窗体的布局方向,默认情况下是Qt::LeftToRight
  • QLocale locale: 指示窗体的地理位置,如果没有指示窗体的地理位置,默认是父项的位置,使用函数setLocale来设置
  • const bool maximized: 指示窗体是否是最大化的,默认情况下,返回false
  • int maximumHeight: 指示窗体的最大高度,默认情况下,是16777215
  • QSize maximumSize: 指示窗体的最大尺寸
  • int maximumWidth: 指示窗体的最大宽度
  • const bool minimized: 指示窗体是否是最小化的,默认情况下是false
  • int minimumHeight: 指示窗体的最小宽度,默认情况下是0
  • QSize minimumSize: 指示窗体的最小尺寸,默认情况下是QSize(0, 0)
  • const QSize minimumSizeHint: 指示窗体的最小尺寸,默认情况下是Invaild的
  • int minimumWidth: 指示窗体的最小宽度
  • const bool model: 指示窗体是否是模态对话框,默认情况下是false
  • bool mouseTracking: 指示窗体是否使能了鼠标追踪,如果使能了鼠标追踪,就可以接收到当至少一个鼠标按下的时候,鼠标移动的事件。
  • const QRect: normalGeometry: 指示窗体的正常的尺寸,和上面的不同,这个成员变量会指示出真正的实际的窗体的位置,而不是0 ,0
  • QPalette palette: 指示窗体的调色板,但是不知道如何设置
  • QPoint pos: 指示窗体的位置,相对父项的
  • const QRect rect: 指示窗体的外轮廓的矩形形状和位置
  • QSize size: 指示窗体的尺寸
  • const QSize sizeHint: 指示推荐的窗体尺寸
  • QSize sizeIncrement: 指示窗体的余量
  • QSizePolicy sizePolicy: 指示窗体的尺寸布局策略,比如延伸型,缩小型,等
  • QString status Tip: 指示窗体的状态提示,默认情况下,包含空QString,子窗体设置这个值后,鼠标放在上面会在状态栏有提示
  • QString styleSheet: 指示窗体的风格,可以用类似json的方式来设置风格
  • bool tableTracking: 指示了是否开启窗体跟踪
  • QString toolTip: 指示窗体的工具提示,就是鼠标放上去的提示
  • int toolTipDuraton: 指示了鼠标放上去多少ms后会提示ToolTip
  • bool updatesEnabled: 指示是否启用更新,但是现在还不理解
  • bool visible: 指示了是否这个窗体是有效的
  • QString whatsThis: 指示了窗体的这是什么的帮助,默认情况下是空字符串
  • const int width: 指示了包含在任何窗体轮廓的的宽度
  • QString windowFilePath: 指示了和窗体关联的文件路径,默认情况下是空字符串,不知道有什么用
  • Qt::WindowFlags: 指示了窗体系统的类型的组合,比如Qt::Dialog。
  • QIcon windowIcon: 指示了窗体的图标
  • Qt::WindowModality: 指示了窗体的模态的形式,默认情况下是Qt::NoModal
  • bool windowModified: 指示了窗体是否有未储存的变更,这里有一些例子,后面得看下如何使用这个特性,MDI Example和SDI Example
  • double windowOpacity:指示了窗体的不透明程度,默认情况下是1,1代表完全不透明,0代表完全透明。
  • QString windowTitle: 指示窗体的名称;
  • int x: 指示了窗体相对父项的x方向的位置,默认情况下是0
  • int y: 指示了窗体相对父项额y轴的位置,默认情况下是0

Public Functions

  • QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = …): 构造函数,parent参数指示其父对象,f指示窗体flags,默认情况下会继承父项的flags
  • virtual ~QWidgets(): 析构函数
  • bool acceptDrops() const: 返回窗体是否支持放置操作。
  • QString accessibleDescription() const: 返回窗体的描述,通常窗体的描述是窗体的功能
  • QString accessibleName() const: 返回窗体的名字
  • QList<QAction *> actions() const: 返回窗体可以用的action的指针列表
  • void activateWindow(): 设置窗体为最前面激活的窗体,作用的效果和点击这个窗体相同
  • void QWidget::addAction(QAction *action): 向窗体中添加action
  • void QWidget::addActions(QList<QAction *> actions): 向窗体中添加actions
  • void adjustSize(): 调整窗体的尺寸以适应它的内容
  • bool autoFillBackground(): 返回窗体是否是自动填充背景的
  • QPalette::ColorRole backgroundRole() const: 返回窗体的背景role,这个role用来支持窗体的渲染风格,不同的窗体的渲染风格是不同的,有标准的命名空间来描述的
  • QBackingStore* backingStore() const: 返回窗体的BackingStore,QBackingStore提供了窗体的绘制空间
  • QSize baseSize(): 返回窗体的BaseSize;
  • QWidget* childAt(int x, int y) const: 返回窗体在位置xy处的子窗体的
  • QWidget* childAt(const QPoint &p) const: 返回窗体在位置QPoint p处的子窗体
  • QRect childrenRect() const: 返回窗体的子项的边框
  • QRegion childrenRegion(): 返回窗体的子部件所占用的区域
  • void clearFocus(): 清除窗体所现有的聚焦
  • void clearMask(): 清除窗体所设置的mask,但是Mask怎么用还需要看一下,暂时不理解setMaks的作用
  • QMargins contentsMargins() const: 返回窗体的周围的边缘
  • QRect contentsRect() const: 返回窗体的内容矩形框
  • Qt::ContextMenuPolicy contextMenuPolicy() const: 返回窗体是如何响应邮件快捷菜单的,但是不知道有什么用
  • QCursor cursor() const: 返回窗体的鼠标类型
  • WId effectiveWinId() const:返回窗体的有效的窗口系统标识符
  • void ensurePolished() const: 确定窗体和它的子窗体被QStyle所更新了
  • Qt::FocusPolicy focusPolicy() const: 返回窗体的聚焦形式
  • QWidget* focusProxy() const: 返回窗体的聚焦代理
  • QWidget* fouceWidget() const: 返回最后一个调用函数setFocus的子项
  • const QFont & font() const: 返回窗体的字体
  • QFontInfo fontInfo() const: 返回窗体的信息
  • QFontMetrics fontMetrics() const: 返回窗体的字体度量
  • QPalette::ColorRole foregroundRole() const: 返回窗体的前景的调色板
  • QRect frameGeometry() const: 返回窗体轮廓尺寸
  • QSize frameSize() const: 返回窗体的轮廓大小
  • const QRect & geometry() const: 返回轮廓尺寸
  • void getContentsMargins(int *left, int *top, int *right, int *bottom) const: 通过指针来返回窗体的内容间隙
  • QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)): 将整个窗体渲染成一个pixmap,可以用来进行窗体的截屏
  • void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = …): 获取手势
  • void grabKeyboard(): 获取键盘输入,就是开始监听键盘事件
  • void grabMouse(): 开始监听鼠标事件
  • void grabMouse(const QCursor &cursor): 开始监听指定鼠标类型下的鼠标事件
  • void grabShortcut(const QkeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut): 开始监听快捷键事件
  • QGraphicsEffect *QWidget::graphicsEffect() const: 获取窗体的图像效果,同样可以对QPixmap施加图像效果
  • QGraphicsProxyWidget * graphicsProxyWidget() const: 返回嵌入在图像视图中的窗体,否则返回nullptr
  • bool hasEditFocus() const: 返回是否有编辑聚焦
  • bool hasFocus() const: 返回是否有聚焦
  • virtual bool hasHeightForWidth() const: 如果窗体优先高度,则返回true
  • bool hasMouseTracking() const: 返回是否有鼠标轨迹追踪
  • bool hasTableTracking() const: 返回是否有窗体位置追踪
  • int height() const: 返回窗体的高度
  • virtual int heightForWidth(int w) const: 根据给定的宽度w,返回期望的高度
  • Qt::InputMethodHints inputMethodHints() const: 返回窗体的输入方法,比如是否是密码型的等
  • virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const: 这个函数只对输入型窗体起作用,返回输入方法的查询,具体不太清楚
  • void InsertAction(QAction *before, QAction *action): 在QAction before之前添加action到窗体的QAction列表中。
  • void insertActions(QAction before, QList<QAction*> actions): 在窗体的QAction before之前插入QAction列表
  • bool isActiveWindow() const: 返回窗体是否是激活的窗体
  • bool isAncestorOf(const QWidget *child) const: 返回窗体是否是给定child窗体的先祖
  • bool isEnabled() const: 返回窗体是否使能
  • bool isEnabledTo(const QWidget *ancestor) const: 返回是否这个窗体在其父项窗体激活的情况下也激活
  • bool isFullScreen() const: 返回窗体是否是全屏模式
  • bool isHidden() const: 返回窗体是否是隐藏的
  • bool isMaximized(): 返回窗体是否是最大话的
  • bool isMinimized(): 返回窗体是否是最小化的
  • bool isModel(): 返回窗体是否是模态对话框
  • bool isVisible(): 返回窗体是否是有效的
  • bool isVisiableTo(const QWidget *ancestor) const: 返回窗体相对于先祖ancestor是否是有效的
  • bool isWindow() const: 返回窗体是否是一个独立的窗口
  • bool isWindowModified() const: 返回窗体是是否有未保存的改变,需要注意的是如果子窗体改变了,那么其父窗体都改变了
  • QLayout* layout()const: 返回窗体的布局管理器,如果没有的话就返回0
  • Qt::LayoutDirection layoutDirection(): 返回窗体的布局方式,默认情况下是Qt::LeftToRight
  • QLocale locale() const: 返回窗体的位置
  • QPoint mapFrom(const QWidget *parent, const QPoint &pos) const: 将父窗体parent的坐标系中的pos点转换成调用窗体的坐标系中的点坐标
  • QPoint mapFromGlobal(const QPoint &pos) const: 将全局坐标系中的点的坐标转换成调用窗体的坐标系的点坐标
  • QPoint mapFromParent(const QPoint &pos) const: 将父窗体的坐标中的点转换成调用窗体的坐标系的点
  • Qpoint mapTo(const QWidget *parent, const QPoint &pos) const: 将调用窗体的坐标系转换成父窗体的坐标系,和上面的from函数反过来
  • QPoint mapToGlobal(const QPoint &pos) const: 将调用窗体坐标系中的点转换成全局坐标系中的点
  • QPoint mapToParent(const Qpoint &pos) const: 将调用窗体坐标系中的点转换成父项坐标系中的点
  • QRegion mask() const: 返回窗体中的mask,如果灭有Mask就返回空region
  • int maximumHeight() const: 返回窗体的最大高度
  • QSize maximumSize() const: 返回窗体的最大尺寸
  • int maximumWidth() const: 返回窗体的最大宽度
  • int minimumHeight() const: 返回窗体的最小高度
  • QSize minimumSize() const: 返回窗体的最小尺寸
  • virtual QSize minimumSizeHint() const: 返回窗体的最小尺寸
  • int minimumWidth() const: 返回窗体的最小宽度
  • void move(const QPoint &): 将窗体移动到指定点
  • void move(int x, int y): 将窗体移动到指定点
  • QWidget* nativeParentWidget() const: 返回此窗体的父项,可以用这个函数来获取指向父窗体指针
  • QWidget* nextInFocusChain() const: 返回此窗体的聚焦链中的下一个窗体
  • QRect normalGeometry() const: 返回此窗体的normalGeometry
  • void overrideWindowFlags(Qt::WindowFlags flags): 在不告诉window系统的情况下设置窗体flags
  • const QPalette & palette() const: 返回窗体的颜色板
  • QWidget* parentWidget() const: 返回此窗体的父窗体,如果灭有父窗体就返回0
  • QPoint pos() const: 返回该窗体在父窗体的位置
  • QWidget* previousInFocusChain() const: 返回窗体的聚焦链中的前一个窗体,但是不知道有什么用
  • QRect rect(): 返回窗体的内部矩形轮廓
  • void releaseKeyboard(): 放弃对键盘事件的监听
  • void releaseMouse(): 放弃对鼠标事件的监听
  • void releaseShortcut(): 放弃对快捷键的监听
  • void removeAction(QAction *action): 放弃对这一个QAction的监听
  • void render(QPaintDevcie *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = …): 用此函数来渲染窗体内部的一些东西
  • void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = …): 用此函数来渲染窗体内部的一些东西
  • void repaint(int x, int y, int w, int h): 重绘窗体内部的一个区域
  • void repaint(const QRect &rect): 重绘窗体内部的一个区域
  • void repaint(const QRegion &rgn): 重绘窗体内部的一个区域
  • void resize(const QSize &): 将窗体变成输入的尺寸一样大
  • void resize(int w, int h): 改变窗体的尺寸
  • bool restoreGeometry(const QByteArray &geometry): 使用这个函数来恢复窗体的形状,可以在之前使用QStrrings来储存,然后后面用这个函数恢复
  • QByteArray saveGeometry() const: 储存在最前面的窗体的外观尺寸,可以使用QStrring来储存,卸载关闭窗体的事件中。可以在MDI窗体中使用这个方法
  • void scroll(int dx, int dy): 将窗体移动一端距离
  • void scroll(int dx, int dy, const QRect &r): 仅仅会移动范围r内的部分
  • void setAcceptDrop(bool on): 设置是否接受放置功能
  • void setAccessibleDescription(const QString &description): 设置窗体描述
  • void setAccessibleName(const QString &name): 设置窗体的名字
  • void setAttribute(Qt::WidgetAttribute attribute, bool on = true): 设置窗体的备注
  • void setAutoFillBackground(bool enabled): 设置是否自动填充背景
  • void setBackgroundRole(Qpalttte::ColorRole role): 设置背景规则
  • void setBaseSize(const QSize &): 设置基本的尺寸
  • void setBaseSize(int basew, int baseh): 设置基本尺寸
  • void setContentsMargins(int left, int top, int right, int bottom): 设置内容的外边缘轮廓
  • void setContentsMargins(const QMargins &margins): 设置内容的外边缘轮廓
  • void setContextMenuPolicy(Qt::ContextMenuPolicy policy): 设定了窗体如何显示右键菜单
  • void setCursor(const QCursor &): 设置窗体的鼠标
  • void setEditFocus(bool enable): 设置窗体是否又聚焦
  • void setFixedHeight(int h): 设置固定的高度
  • void setFixedSize(const QSize &s): 设置固定的大小
  • void setFixedWidth(int w): 设置固定的宽度
  • void setFocus(Qt::FocusReason reason): 设置窗体聚焦的原因,比如因为鼠标点击,键盘按下,tab按下等
  • void setFocusPolicy(Qt::FocusPolicy policy): 设置窗体聚焦的策略
  • void setFocusProxy(QWidegt *w): 设置窗体聚焦的委托
  • void setFont(): 设置窗体的字体
  • void setForegroundRole(QPalette::ColorRole role): 设置前景的颜色规则
  • void setGeometry(const QRect &): 设置窗体的形状
  • void setGeometry(int x, int y, int w, int h): 设置窗体的形状
  • void setGraphicsEffect(QGraphicsEffict *effect): 设置窗体的图片颜色效果
  • void setInputMethodHints(Qt::InputMethodHints hints): 设置窗体的输入方法暗示
  • void setLayout(QLayout *layout): 设置窗体的布局
  • void setLayoutDirection(Qt::LayoutDirection direction): 设置窗体的布局方向
  • void setLocal(const QLocale &locale): 设置窗体的地理位置
  • void setMask(const QBitmap &bitmap): 使用bitmap来设置窗体的mask
  • void setMask(const QRegion &region): 使用QRegion来设置窗体的mask
  • void setMaximumHeight(int maxh)
  • void setMaximumSize(const QSize &)
  • void setMaximumSize(int maxw, int maxh)
  • void setMaximumWidth(int maxw)
  • void setMinimumHeight(int minh)
  • void setMinimumSize(const QSize &)
  • void setMinimumSize(int minw, int minh)
  • void setMinimumWidth(int minw)
  • void setMouseTracking(bool enable)
  • void setPalette(const QPalette &)
  • void setParent(QWidget *parent): 设置窗体的父项
  • void setParent(QWidget *parent, Qt::WindowFlags f): 设置窗体的父项
  • void setShortcutAutoRepeat(int id, bool enable = true): 根据给定的id,设置快捷按键方式重复
  • void setShoutcutEnabled(int id, bool enable = true): 设置快捷方式有效
  • void setSizeIncrement(const QSize &): 设置窗体尺寸增量
  • void setSizeIncrement(int w, int h): 设置窗体尺寸增量
  • void setSizePolicy(QSizePolicy): 设置窗体尺寸逻辑
  • void setSizePolicy(QSizePolicy::Policy horiaontal, QSizePolicy::Policy vrtical): 设置窗体的尺寸逻辑
  • void setStatusTip(const QString &): 设置窗体状态提示
  • void setStyle(QStyle *style): 设置窗体的样式,这个得好好研究下
  • void setTableTracking(bool enable): 设置窗体位置跟踪是否使能
  • void setToolTip(const QString&): 设置窗体的鼠标放上去的提示
  • void setToolTipDuration(int msec): 设置窗体在鼠标放上去多少毫秒后会打开提示
  • void setUpdatesEnabled(bool enable): 设置窗体是否允许升级
  • void setWindowFilePath(const QString &filePath): 设置窗体的文件路径,但是不知道是不是可以在MDI中使用
  • void setWindowFlag(Qt::WindowType flag, bool on = true): 设置窗体的标志位
  • void setWindowFlags(Qt::WindowFlags type): 也是设置窗体的标志位
  • void setWindowIcon(const QIcon &icon): 设置窗体的图标
  • void setWindowModality(Qt::WindowModality windowModality): 设置窗体是否是模态对话框
  • void setWindowOpacity(Qt::WindowModality windowModality): 设置窗体的不透明度级别
  • void setWindowRole(const QString &role): 设置窗体的角色,但是现在不知道有什么用
  • void setWindowState(Qt::WindowStates windowState): 设置窗体的状态,通过异或运算
  • void setupUi(QWidget *widget): 设置用户指定接口的Ui
  • QSize size() const: 返回窗体的尺寸
  • virtual QSize sizeHint() const: 返回建议的尺寸
  • QSize sizeincrement() const: 窗体尺寸的增量
  • QSizePolicy sizePolicy() const: 返回窗体的尺寸方案
  • void stackUnder(QWidget *w): 将窗体放在窗体w的栈下
  • QString statusTip() const: 返回窗体的status tip
  • QStyle* style() const: 返回窗体的风格
  • QString styleSheet() const: 返回窗体的styleSheet
  • bool testAttribute(Qt::WidgetAttribute sttribute) const: 测试窗体是否支持某个属性,比如鼠标拖拽等
  • QString toolTip() const: 返回窗体的tooltip
  • int toolTipDuration() const: 返回窗体的tooltip多久才出来
  • bool underMouse() const: 如果有鼠标在窗体上,就返回true
  • void ungrabGesture(Qt::GestureType gesture): 注销窗体的某个手势动作
  • void unsetCursor(): 取消窗体的鼠标设置
  • void unsetLayoutDirection(): 复位窗体的布局方向
  • void unsetLocale(): 复位窗体的地区
  • void update(int x, int y, int w, int h): 更新窗体的这个区域
  • void update(const QRect &rect): 更新窗体的这个区域
  • void update(const QRegion &rgn): 更新窗体的这个区域
  • void updateGeometry(): 更新窗体尺寸
  • bool updateEnabled() const: 是否允许窗体更新
  • QRegion visibleRegion() const: 返回窗体有效的区域
  • QString whatsThis() const: 返回窗体的这是什么的文本
  • int width() const: 返回窗体的宽度
  • WId winId() const: 返回窗体的Id
  • QWidget* window() const: 返回本窗体
  • QString windowFilePath() const: 返回窗体的路径
  • Qt::WindowFlags windowFlags() const: 返回窗体的windowFlags
  • QWindow * windowHandle() const: 返回关联的windowhandle
  • QIcon windowIcon() const: 返回窗体的图表
  • Qt::WindowModaliy windowModaliy() const: 返回窗体的模态形式
  • qreal windowOpacity() const: 返回窗体的不透明度
  • QString windowRole() const: 返回窗体的role
  • Qt::WindowStates windowState() const: 返回窗体的states
  • QString windowTitle() 返回窗体的标题
  • Qt::WindowType windowType() const: 返回窗体的类型,比如是否是对话框
  • int x() const: 返回窗体的x坐标
  • int y() const: 返回窗体的y坐标

Public Slots

  • bool close():
  • void hide(): 隐藏,相当于setVisible
  • void lower(): 将窗体向下一层,在父窗体中,可以用来处理各个空间的上升和抬高
  • void raise(): 将窗体向上一层,在父窗体中
  • void repaint(): 重绘窗体
  • void setDisabled(bool disable): 设置窗体的输入事件是否禁用
  • void setEnabled(bool): 设置窗体是否使能
  • setFocus(): 设置聚焦此窗体
  • void setHidden(bool hidden): 设置是否隐藏
  • void setStyleSheet(const QString &styleSheet): 设置窗体的stylesheet
  • virtual void setVisible(bool visible): 设置窗体的是否是有效的,可见的
  • void setWindowModified(bool): 设置窗体是否是模态
  • void setWindowTitle(const QString &): 设置窗体名称
  • void show(): 设置窗体为显示
  • void showFullScreen(): 设置为全屏显示
  • void showMaximized(): 设置为最大化显示
  • void show Minimized(): 设置为最小化显示
  • void showNormal(): 设置为正常显示
  • void update(): 升级窗体

Signals

  • void customContextMenuRequested(const QPoint &pos):
  • void windowIconChnaged(const QIcon &icon);
  • void windowTitleChanged(const QString &title)

protected Functions

  • virtual void actionEvent(QActionEvent *event): QActionEvent

Detailed Description

QWidget是所有用户用户交互接口的基类
widget是用户接口的最小单位,它接收鼠标,键盘还有窗体系统中的其他事件,并且在屏幕上绘制能表示它自己的实例,每一个widget都是矩形,并且他们沿Z字型来排序,一个widget可以被其父widget和其他widget所切割,前面的widget会盖住后面的widget
没有嵌入在一个父widget中的widget我们叫他window(对话框),通常来说,window有一个外框和一个标题栏,尽管我们可以通过设置合适的window flags来取消这两个装饰,在Qt中,QMainWindow和各种QDislog的子类都是最常用的window形式
每一个窗体的构造函数都有两个标准的参数

  1. QWidget *parent = 0 是新窗体的父窗体(默认情况下是0),这样的话,新widget将会是一个window,如果不是,它将是一个父widget的子widget,并且被父widget的geometry来约束(除非你指定了其window flag为Qt::window)
  2. Qt::WindowFlags f = 0设置window flag,默认值适合基本上所有的windgets,但是要设置,举个例子,一个window不包含window系统边框,你必须指定特使的flags

QWidget有很多成员函数,但是通常其中的很多函数几乎没有直接的功能,举个例子,QWidget有一个字体属性,但是它自己从来不用,他们中的很多子类提供真正的函数,比如QLabel,QPushButton等

Top-Level and Child Widgets

一个没有父项widget的widget通常是一个独立的window(Top-Level widget),对于这些widgets,可以使用函数setWindowTitle()和setWindowIcon来设置标题栏和标题图标。
非window的widgets是子widgets,他们显示在他们的父widget中,大多数在Qt 中的widget主要都是所谓子widget来使用的,举个例子,当然也可以将按钮当做顶层窗体,但是更多人更希望将他们的按钮放在他们的widget中,比如QDialog
在这里插入图片描述
上面的图片展示了QGroupBox widget用来承担多个子widgets,并在由QGridLayout提供的layout中完成布局,QLabel的子widgets被指示出他们的全尺寸
如果你想使用一个QWidget来容纳所有的子widget,你通常需要添加一个布局到父QWidget中,详细的请看关于Layout布局管理器的详细信息

Composite widgets 组合widgets

当一个widget作为一个容器来容纳一定数量的子widgets时,它被称为组合widget,他们可以通过构造一个widget和需要的可视化特性-一个QFrame来构造,比如通过添加子widgets到里面,通常来说被一个layout来管理,上面的图像展示了一个组合widget
组合widget可以通过派生标准widget来构造,比如QWidget或者QFrame,然后在构造函数中添加必要的布局,很多例子都用到了这个特性。

Custom Widget and painting

尽管QWidget是QPaintDevice的子类,子类可以用来显示定制的内容,可以在QPainter的一个实例的帮助下进行一系列的绘制操作,这个特性巴拉巴拉,有一个例子叫模拟钟表可以看

Size Hints and Size Policies

当重写一个新的widget的时候,最有用的方式是重写sizeHint()函数,来提供一个合理的默的widget尺寸,和通过函数setSizePolicy()函数设置尺寸策略。
默认情况下,组合widget不提供size Hint,它将会根据自己的子窗体的空间需求来调整自己的空间

Events

Widgets相应事件,事件典型的是由用户的行为造成的,Qt传递事件到widget中,通过调用QEvent子类的实例中指定的事件操作函数,这些实例包含每一个事件的信息。
如果你的widget仅仅包含子widget,你可能不需要去实现任何事件句柄,如果你想监测一个鼠标在子widget中按下的事件,你调用widget的mousePressEvent()中子widget的underMouse()函数
下面是QWidget中的一些event,我们从最常用的开始

  • paintEvent()在窗体需要重绘的时候都会调用,每一个widget显示定制的内容的时候必须重实现它,painting使用一个QPainter,仅发生在paintEvent()中,或者在paintEvent()函数中
  • resizeEvent()事件在改变widget尺寸的时候发生
  • mousePressEvent()在鼠标在widget中,且按下的时候发生,或者当widget已经通过函数grabMouse()来获取到鼠标的时候调用,按下但是没有释放鼠标的时候等同于调用grabMouse()函数
  • mouseReleaseEvent()在鼠标释放的时候调用,widget在收到相关的鼠标按下事件后在可以收到鼠标释放的事件,这意味着如果用户在widget中按下鼠标,然后按照鼠标移动到其他地方随后在释放鼠标按钮,你的widget接受的release事件,这里有一个例外,如果一个弹出式菜单在鼠标按钮按下的时候出现,这个弹出菜单将会立刻中断鼠标事件
  • mouseDoubleClickEvent()在用户双击窗体的时候调用,如果用户双击,这个widget收到一个鼠标按下的事件,一个鼠标释放的事件,这两个事件会重复两次,然后这个事件才会发生

有关于键盘的事件

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值