文章目录
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 ®ion): 使用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形式
每一个窗体的构造函数都有两个标准的参数
- QWidget *parent = 0 是新窗体的父窗体(默认情况下是0),这样的话,新widget将会是一个window,如果不是,它将是一个父widget的子widget,并且被父widget的geometry来约束(除非你指定了其window flag为Qt::window)
- 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收到一个鼠标按下的事件,一个鼠标释放的事件,这两个事件会重复两次,然后这个事件才会发生
有关于键盘的事件