(1)原篇幅 37 为最开始整理,整理的不是太完善。重点不突出。故重新整理,但删除了大量的注释,重在突出本 QWidget类的内部逻辑,更易观察其包含了哪些内容。至于不理解的成员函数与属性,内容已不太多了,查阅官方注释即可。
这是篇 37 的超文本链接,那里的注释较完整些
(2)
#ifndef QWIDGET_H
#define QWIDGET_H
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtGui/qwindowdefs.h>
#include <QtCore/qobject.h>
#include <QtCore/qmargins.h>
#include <QtGui/qpaintdevice.h>
#include <QtGui/qpalette.h>
#include <QtGui/qfont.h>
#include <QtGui/qfontmetrics.h>
#include <QtGui/qfontinfo.h>
#include <QtWidgets/qsizepolicy.h>
#include <QtGui/qregion.h>
#include <QtGui/qbrush.h>
#include <QtGui/qcursor.h>
# include <QtGui/qkeysequence.h>
#ifdef QT_INCLUDE_COMPAT
#include <QtGui/qevent.h>
#endif
QT_BEGIN_NAMESPACE
class QLayout;
class QStyle;
class QAction;
class QVariant;
class QWindow;
class QActionEvent;
class QMouseEvent;
class QWheelEvent;
class QHoverEvent;
class QKeyEvent;
class QEnterEvent;
class QFocusEvent;
class QPaintEvent;
class QMoveEvent;
class QResizeEvent;
class QCloseEvent;
class QContextMenuEvent;
class QInputMethodEvent;
class QTabletEvent;
class QDragEnterEvent;
class QDragMoveEvent;
class QDragLeaveEvent;
class QDropEvent;
class QScreen;
class QShowEvent;
class QHideEvent;
class QIcon;
class QBackingStore;
class QPlatformWindow;
class QLocale;
class QGraphicsProxyWidget;
class QGraphicsEffect;
class QRasterWindowSurface;
class QUnifiedToolbarSurface;
class QPixmap;
class QDebug;
template <> //至此,该类型转换函数支持了对到 QWidget * 指针类型的准还
inline QWidget * qobject_cast< QWidget *>( QObject * o)
{
if (!o || !o->isWidgetType()) return nullptr;
return static_cast<QWidget*>(o); //可见,核心还是 c++ 的静态类型转换
}
template <>
inline const QWidget * qobject_cast<const QWidget *>(const QObject * o)
{
if (!o || !o->isWidgetType()) return nullptr;
return static_cast<const QWidget*>(o);
}
#define QWIDGETSIZE_MAX ((1<<24)-1)
//说明本指针类型可以交给 QDebug 输出来调试
Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QWidget *);
class QWidgetData
{
public:
WId winid;
uint widget_attributes;
Qt::WindowFlags window_flags;
uint window_state : 4;
uint focus_policy : 4;
uint sizehint_forced :1;
uint is_closing :1;
uint in_show : 1;
uint in_set_window_state : 1;
mutable uint fstrut_dirty : 1;
uint context_menu_policy : 3;
uint window_modality : 2;
uint in_destructor : 1;
uint unused : 13;
QRect crect;
mutable QPalette pal;
QFont fnt;
QRect wrect;
};
class QWidgetPrivate;
class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice
{
Q_OBJECT
Q_DECLARE_PRIVATE(QWidget)
Q_PROPERTY(QString windowTitle //先文本量,再布尔量,再其它,再数字量
READ windowTitle WRITE setWindowTitle
NOTIFY windowTitleChanged)
Q_PROPERTY(QIcon windowIcon
READ windowIcon WRITE setWindowIcon
NOTIFY windowIconChanged)
Q_PROPERTY(QString windowIconText
READ windowIconText WRITE setWindowIconText
NOTIFY windowIconTextChanged) // deprecated 废弃
Q_PROPERTY(QString toolTip
READ toolTip WRITE setToolTip)
Q_PROPERTY(int toolTipDuration
READ toolTipDuration WRITE setToolTipDuration)
Q_PROPERTY(QString statusTip
READ statusTip WRITE setStatusTip)
Q_PROPERTY(QString whatsThis
READ whatsThis WRITE setWhatsThis)
Q_PROPERTY(QString accessibleName
READ accessibleName WRITE setAccessibleName)
Q_PROPERTY(QString accessibleDescription
READ accessibleDescription
WRITE setAccessibleDescription)
Q_PROPERTY(QString styleSheet
READ styleSheet WRITE setStyleSheet)
Q_PROPERTY(QLocale locale
READ locale WRITE setLocale
RESET unsetLocale)
Q_PROPERTY(QString windowFilePath
READ windowFilePath WRITE setWindowFilePath)
Q_PROPERTY(bool enabled
READ isEnabled WRITE setEnabled)
Q_PROPERTY(bool updatesEnabled
READ updatesEnabled WRITE setUpdatesEnabled
DESIGNABLE false)
Q_PROPERTY(bool focus READ hasFocus)
Q_PROPERTY(bool modal READ isModal)
Q_PROPERTY(Qt::WindowModality windowModality
READ windowModality
WRITE setWindowModality)
Q_PROPERTY(bool mouseTracking
READ hasMouseTracking WRITE setMouseTracking)
Q_PROPERTY(bool tabletTracking
READ hasTabletTracking WRITE setTabletTracking)
Q_PROPERTY(bool isActiveWindow READ isActiveWindow)
Q_PROPERTY(bool visible
READ isVisible WRITE setVisible
DESIGNABLE false)
Q_PROPERTY(bool minimized READ isMinimized)
Q_PROPERTY(bool maximized READ isMaximized)
Q_PROPERTY(bool fullScreen READ isFullScreen)
Q_PROPERTY(bool acceptDrops
READ acceptDrops WRITE setAcceptDrops)
Q_PROPERTY(bool windowModified
READ isWindowModified WRITE setWindowModified)
Q_PROPERTY(bool autoFillBackground
READ autoFillBackground
WRITE setAutoFillBackground)
QDOC_PROPERTY(Qt::WindowFlags windowFlags
READ windowFlags
WRITE setWindowFlags)
Q_PROPERTY(QPalette palette
READ palette WRITE setPalette)
Q_PROPERTY(QFont font
READ font WRITE setFont)
Q_PROPERTY(QCursor cursor
READ cursor WRITE setCursor
RESET unsetCursor)
Q_PROPERTY(Qt::FocusPolicy focusPolicy
READ focusPolicy
WRITE setFocusPolicy)
Q_PROPERTY(QSizePolicy sizePolicy
READ sizePolicy
WRITE setSizePolicy)
Q_PROPERTY(Qt::ContextMenuPolicy contextMenuPolicy
READ contextMenuPolicy
WRITE setContextMenuPolicy)
Q_PROPERTY(Qt::LayoutDirection layoutDirection
READ layoutDirection
WRITE setLayoutDirection
RESET unsetLayoutDirection)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints
READ inputMethodHints
WRITE setInputMethodHints)
Q_PROPERTY(QRect geometry
READ geometry WRITE setGeometry)
Q_PROPERTY(QRect frameGeometry READ frameGeometry)
Q_PROPERTY(QRect normalGeometry READ normalGeometry)
Q_PROPERTY(QRect rect READ rect)
Q_PROPERTY(QRect childrenRect READ childrenRect)
Q_PROPERTY(QRegion childrenRegion READ childrenRegion)
Q_PROPERTY(QSize frameSize READ frameSize)
Q_PROPERTY(QSize size
READ size WRITE resize
DESIGNABLE false STORED false)
Q_PROPERTY(QSize sizeHint READ sizeHint)
Q_PROPERTY(QSize sizeIncrement
READ sizeIncrement
WRITE setSizeIncrement)
Q_PROPERTY(QSize baseSize
READ baseSize WRITE setBaseSize)
Q_PROPERTY(QSize minimumSizeHint
READ minimumSizeHint)
Q_PROPERTY(QSize minimumSize
READ minimumSize WRITE setMinimumSize)
Q_PROPERTY(QSize maximumSize
READ maximumSize WRITE setMaximumSize)
Q_PROPERTY(int minimumWidth
READ minimumWidth WRITE setMinimumWidth
STORED false
DESIGNABLE false)
Q_PROPERTY(int minimumHeight
READ minimumHeight WRITE setMinimumHeight
STORED false
DESIGNABLE false)
Q_PROPERTY(int maximumWidth
READ maximumWidth WRITE setMaximumWidth
STORED false
DESIGNABLE false)
Q_PROPERTY(int maximumHeight
READ maximumHeight WRITE setMaximumHeight
STORED false
DESIGNABLE false)
Q_PROPERTY(int width READ width)
Q_PROPERTY(int height READ height)
Q_PROPERTY(int x READ x)
Q_PROPERTY(int y READ y)
Q_PROPERTY(QPoint pos
READ pos WRITE move
DESIGNABLE false STORED false)
Q_PROPERTY(double windowOpacity
READ windowOpacity WRITE setWindowOpacity)
private:
void setBackingStore(QBackingStore *store);
bool testAttribute_helper(Qt::WidgetAttribute) const;
QLayout *takeLayout();
friend class QBackingStoreDevice;
friend class QWidgetRepaintManager;
friend class QApplication;
friend class QApplicationPrivate;
friend class QGuiApplication;
friend class QGuiApplicationPrivate;
friend class QBaseApplication;
friend class QPainter;
friend class QPainterPrivate;
friend class QPixmap; // for QPixmap::fill()
friend class QFontMetrics;
friend class QFontInfo;
friend class QLayout;
friend class QWidgetItem;
friend class QWidgetItemV2;
friend class QX11PaintEngine;
friend class QWin32PaintEngine;
friend class QShortcutPrivate;
friend class QWindowSurface;
friend class QGraphicsProxyWidget;
friend class QGraphicsProxyWidgetPrivate;
friend class QStyleSheetStyle;
friend struct QWidgetExceptionCleaner;
friend class QWidgetWindow;
friend class QAccessibleWidget;
friend class QAccessibleTable;
friend class QAccessibleTabButton;
friend class QGestureManager;
friend class QWinNativePanGestureRecognizer;
friend class QWidgetEffectSourcePrivate;
friend Q_WIDGETS_EXPORT QWidgetData *qt_qwidget_data(QWidget *widget);
friend Q_WIDGETS_EXPORT QWidgetPrivate *qt_widget_private(QWidget *widget);
private:
Q_DISABLE_COPY(QWidget)
Q_PRIVATE_SLOT(d_func(), void _q_showIfNotHidden())
Q_PRIVATE_SLOT(d_func(), QWindow *_q_closestWindowHandle())
QWidgetData * data;
protected:
QWidget(QWidgetPrivate & d, QWidget * parent, Qt::WindowFlags f);
public:
enum RenderFlag {
DrawWindowBackground = 0x1,
DrawChildren = 0x2,
IgnoreMask = 0x4
};
Q_DECLARE_FLAGS(RenderFlags, RenderFlag)
explicit QWidget(QWidget * parent = nullptr,
Qt::WindowFlags f = Qt::WindowFlags());
~QWidget();
// Q_PROPERTY(QString windowTitle //先文本量,再布尔量,再其它,再数字量
// READ windowTitle WRITE setWindowTitle
// NOTIFY windowTitleChanged)
QString windowTitle() const;
public Q_SLOTS :
void setWindowTitle(const QString &);
Q_SIGNALS:
void windowTitleChanged(const QString & title);
public:
// Q_PROPERTY(QIcon windowIcon
// READ windowIcon WRITE setWindowIcon
// NOTIFY windowIconChanged)
QIcon windowIcon() const;
void setWindowIcon( const QIcon & icon);
Q_SIGNALS :
void windowIconChanged(const QIcon & icon);
public:
// Q_PROPERTY(QString windowIconText
// READ windowIconText WRITE setWindowIconText
// NOTIFY windowIconTextChanged) // deprecated 废弃
QString windowIconText() const;
void setWindowIconText(const QString &);
Q_SIGNALS :
void windowIconTextChanged(const QString & iconText);
public:
// Q_PROPERTY(QString toolTip
// READ toolTip WRITE setToolTip)
QString toolTip() const;
void setToolTip(const QString &);
// Q_PROPERTY(int toolTipDuration
// READ toolTipDuration WRITE setToolTipDuration)
int toolTipDuration() const;
void setToolTipDuration(int msec);
// Q_PROPERTY(QString statusTip
// READ statusTip WRITE setStatusTip)
QString statusTip() const;
void setStatusTip(const QString &);
// Q_PROPERTY(QString whatsThis
// READ whatsThis WRITE setWhatsThis)
QString whatsThis() const;
void setWhatsThis(const QString &);
// Q_PROPERTY(QString accessibleName
// READ accessibleName WRITE setAccessibleName)
QString accessibleName() const;
void setAccessibleName(const QString & name);
// Q_PROPERTY(QString accessibleDescription
// READ accessibleDescription
// WRITE setAccessibleDescription)
QString accessibleDescription() const;
void setAccessibleDescription(const QString & description);
// Q_PROPERTY(QString styleSheet
// READ styleSheet WRITE setStyleSheet)
QString styleSheet() const;
public Q_SLOTS :
void setStyleSheet(const QString & styleSheet);
public:
// Q_PROPERTY(QLocale locale
// READ locale WRITE setLocale
// RESET unsetLocale)
QLocale locale() const;
void setLocale(const QLocale & locale);
void unsetLocale();
// Q_PROPERTY(QString windowFilePath
// READ windowFilePath WRITE setWindowFilePath)
QString windowFilePath() const;
void setWindowFilePath(const QString & filePath);
// Q_PROPERTY(bool enabled
// READ isEnabled WRITE setEnabled)
bool isEnabled () const;
bool isEnabledTo(const QWidget *) const;
public Q_SLOTS :
void setEnabled (bool);
void setDisabled (bool);
public:
// Q_PROPERTY(bool updatesEnabled
// READ updatesEnabled WRITE setUpdatesEnabled
// DESIGNABLE false)
inline bool updatesEnabled() const;
void setUpdatesEnabled(bool enable);
// Q_PROPERTY(bool focus READ hasFocus) //后面还有属性 focusPolicy
bool hasFocus() const;
public Q_SLOTS :
inline void setFocus() { setFocus(Qt::OtherFocusReason); }
public:
void setFocus(Qt::FocusReason reason);
void clearFocus();
// Q_PROPERTY(bool mouseTracking //鼠标跟踪
// READ hasMouseTracking WRITE setMouseTracking)
bool hasMouseTracking() const;
void setMouseTracking(bool enable);
// Q_PROPERTY(bool tabletTracking //触摸屏跟踪
// READ hasTabletTracking WRITE setTabletTracking)
bool hasTabletTracking() const;
void setTabletTracking(bool enable);
// Q_PROPERTY(bool isActiveWindow READ isActiveWindow)
bool isActiveWindow() const;
// Q_PROPERTY(bool visible
// READ isVisible WRITE setVisible
// DESIGNABLE false)
bool isVisible () const;
bool isVisibleTo(const QWidget *) const;
inline bool isHidden () const;
public Q_SLOTS :
virtual void setVisible (bool visible);
void setHidden (bool hidden );
void show ();
void hide ();
bool close();
public:
// Q_PROPERTY(bool minimized READ isMinimized)
bool isMinimized() const;
public Q_SLOTS :
void showMinimized();
public:
// Q_PROPERTY(bool maximized READ isMaximized)
bool isMaximized() const;
public Q_SLOTS :
void showMaximized();
public:
// Q_PROPERTY(bool fullScreen READ isFullScreen)
bool isFullScreen() const;
public Q_SLOTS :
void showFullScreen();
public:
// Q_PROPERTY(bool acceptDrops
// READ acceptDrops WRITE setAcceptDrops)
bool acceptDrops() const;
void setAcceptDrops(bool on);
// Q_PROPERTY(bool windowModified
// READ isWindowModified WRITE setWindowModified)
bool isWindowModified() const;
public Q_SLOTS :
void setWindowModified(bool);
public:
// Q_PROPERTY(bool autoFillBackground
// READ autoFillBackground
// WRITE setAutoFillBackground)
bool autoFillBackground() const;
void setAutoFillBackground(bool enabled);
// Q_PROPERTY(bool modal READ isModal)
bool isModal() const;
// Q_PROPERTY(Qt::WindowModality windowModality
// READ windowModality
// WRITE setWindowModality)
Qt::WindowModality windowModality() const;
void setWindowModality( Qt::WindowModality windowModality);
// QDOC_PROPERTY(Qt::WindowFlags windowFlags
// READ windowFlags
// WRITE setWindowFlags)
inline Qt::WindowFlags windowFlags() const;
void setWindowFlags(Qt::WindowFlags type);
void overrideWindowFlags(Qt::WindowFlags type);
void setWindowFlag (Qt::WindowType, bool on = true);
// Q_PROPERTY(QPalette palette
// READ palette WRITE setPalette)
const QPalette & palette() const;
void setPalette(const QPalette &);
// Q_PROPERTY(QFont font
// READ font WRITE setFont)
const QFont & font() const;
void setFont(const QFont &);
QFontMetrics fontMetrics() const;
QFontInfo fontInfo() const;
// Q_PROPERTY(QCursor cursor
// READ cursor WRITE setCursor
// RESET unsetCursor)
QCursor cursor() const;
void setCursor(const QCursor &);
void unsetCursor();
// Q_PROPERTY(Qt::FocusPolicy focusPolicy //也有布尔属性 focus,在前面
// READ focusPolicy
// WRITE setFocusPolicy)
Qt::FocusPolicy focusPolicy() const; //焦点策略
void setFocusPolicy(Qt::FocusPolicy policy);
QWidget * focusProxy() const; //焦点代理,一字之差
void setFocusProxy(QWidget *);
// Q_PROPERTY(QSizePolicy sizePolicy
// READ sizePolicy
// WRITE setSizePolicy)
QSizePolicy sizePolicy() const;
void setSizePolicy(QSizePolicy);
inline void setSizePolicy(QSizePolicy::Policy horizontal,
QSizePolicy::Policy vertical);
// Q_PROPERTY(Qt::ContextMenuPolicy contextMenuPolicy
// READ contextMenuPolicy
// WRITE setContextMenuPolicy)
Qt::ContextMenuPolicy contextMenuPolicy() const;
void setContextMenuPolicy(Qt::ContextMenuPolicy policy);
// Q_PROPERTY(Qt::LayoutDirection layoutDirection
// READ layoutDirection
// WRITE setLayoutDirection
// RESET unsetLayoutDirection)
Qt::LayoutDirection layoutDirection() const;
void setLayoutDirection( Qt::LayoutDirection direction );
void unsetLayoutDirection();
// Q_PROPERTY(Qt::InputMethodHints inputMethodHints
// READ inputMethodHints
// WRITE setInputMethodHints)
Qt::InputMethodHints inputMethodHints() const;
void setInputMethodHints( Qt::InputMethodHints hints);
// Q_PROPERTY(double windowOpacity //不透明度
// READ windowOpacity WRITE setWindowOpacity)
qreal windowOpacity() const;
void setWindowOpacity(qreal level);
// Q_PROPERTY(QRect geometry
// READ geometry WRITE setGeometry)
const QRect & geometry() const;
inline void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &);
QByteArray saveGeometry() const;
void updateGeometry();
bool restoreGeometry(const QByteArray & geometry);
// Q_PROPERTY(QRect frameGeometry READ frameGeometry)
QRect frameGeometry() const;
// Q_PROPERTY(QRect normalGeometry READ normalGeometry)
QRect normalGeometry() const;
// Q_PROPERTY(QRect rect READ rect)
inline QRect rect() const;
QRect contentsRect() const;
// Q_PROPERTY(QRect childrenRect READ childrenRect)
QRect childrenRect() const;
// Q_PROPERTY(QRegion childrenRegion READ childrenRegion)
QRegion childrenRegion() const;
QRegion visibleRegion() const;
// Q_PROPERTY(QSize frameSize READ frameSize)
QSize frameSize() const;
// Q_PROPERTY(QSize size
// READ size WRITE resize
// DESIGNABLE false STORED false)
QSize size() const;
void resize(int w, int h);
void resize(const QSize &);
// Q_PROPERTY(QSize sizeHint READ sizeHint)
virtual QSize sizeHint() const;
virtual bool hasHeightForWidth() const;
virtual int heightForWidth(int) const;
// Q_PROPERTY(QSize minimumSizeHint
// READ minimumSizeHint)
virtual QSize minimumSizeHint() const;
// Q_PROPERTY(QSize sizeIncrement
// READ sizeIncrement
// WRITE setSizeIncrement)
QSize sizeIncrement() const;
void setSizeIncrement(const QSize &);
void setSizeIncrement(int w, int h);
// Q_PROPERTY(QSize baseSize
// READ baseSize WRITE setBaseSize)
QSize baseSize() const;
void setBaseSize(const QSize &);
void setBaseSize(int basew, int baseh);
// Q_PROPERTY(QSize minimumSize
// READ minimumSize WRITE setMinimumSize)
QSize minimumSize() const;
void setMinimumSize(const QSize &);
void setMinimumSize(int minw, int minh);
// Q_PROPERTY(QSize maximumSize
// READ maximumSize WRITE setMaximumSize)
QSize maximumSize() const;
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);
// Q_PROPERTY(int minimumWidth
// READ minimumWidth WRITE setMinimumWidth
// STORED false
// DESIGNABLE false)
int minimumWidth() const;
void setMinimumWidth(int minw);
// Q_PROPERTY(int minimumHeight
// READ minimumHeight WRITE setMinimumHeight
// STORED false
// DESIGNABLE false)
int minimumHeight() const;
void setMinimumHeight(int minh);
// Q_PROPERTY(int maximumWidth
// READ maximumWidth WRITE setMaximumWidth
// STORED false
// DESIGNABLE false)
int maximumWidth() const;
void setMaximumWidth(int maxw);
// Q_PROPERTY(int maximumHeight
// READ maximumHeight WRITE setMaximumHeight
// STORED false
// DESIGNABLE false)
int maximumHeight() const;
void setMaximumHeight(int maxh);
// Q_PROPERTY(int width READ width)
inline int width() const;
// Q_PROPERTY(int height READ height)
inline int height() const;
// Q_PROPERTY(int x READ x)
int x() const;
// Q_PROPERTY(int y READ y)
int y() const;
// Q_PROPERTY(QPoint pos
// READ pos WRITE move
// DESIGNABLE false STORED false)
QPoint pos() const;
void move(int x, int y);
void move(const QPoint &);
protected : //从保护、公共到槽函数,修改窗体的成员函,结合起来看,学习
void initPainter(QPainter * painter) const override;
void create(WId = 0, bool initializeWindow = true,
bool destroyOldWindow = true);
void destroy(bool destroyWindow = true, bool destroySubWindows = true);
public :
inline
void update(int x, int y, int w, int h);
void update(const QRect &);
void update(const QRegion &);
void repaint(int x, int y, int w, int h);
void repaint(const QRect &);
void repaint(const QRegion &);
protected Q_SLOTS:
void updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll);
public Q_SLOTS:
void update ();
void repaint();
//void show();
//void hide();
//bool close();
void raise();
void lower();
// void showMinimized();
// void showMaximized();
// void showFullScreen();
void showNormal();
// void setDisabled (bool);
// void setEnabled (bool);
// void setWindowTitle (const QString &);
//virtual void setVisible (bool visible);
// void setStyleSheet (const QString & styleSheet);
// void setHidden (bool hidden);
// void setWindowModified(bool);
//inline void setFocus () { setFocus(Qt::OtherFocusReason); }
Q_SIGNALS:
//void windowTitleChanged (const QString & title);
//void windowIconChanged (const QIcon & icon);
//void windowIconTextChanged (const QString & iconText);
void customContextMenuRequested(const QPoint & pos);
public:
QStyle * style() const;
void setStyle(QStyle *);
QLayout * layout() const;
void setLayout(QLayout *);
QScreen * screen() const;
void setScreen(QScreen *);
WId winId() const;
inline WId internalWinId() const { return data->winid; }
WId effectiveWinId() const;
void createWinId(); // internal, going away
QString windowRole() const;
void setWindowRole(const QString &);
QPalette::ColorRole backgroundRole() const;
void setBackgroundRole(QPalette::ColorRole);
QPalette::ColorRole foregroundRole() const;
void setForegroundRole(QPalette::ColorRole);
QGraphicsEffect * graphicsEffect() const;
void setGraphicsEffect(QGraphicsEffect * effect);
QGraphicsProxyWidget * graphicsProxyWidget() const;
QRegion mask() const;
void setMask(const QBitmap &);
void setMask(const QRegion &);
void clearMask();
Qt::WindowStates windowState() const;
void setWindowState(Qt::WindowStates state);
void overrideWindowState(Qt::WindowStates state);
QMargins contentsMargins() const;
void setContentsMargins(int left, int top, int right, int bottom);
void setContentsMargins(const QMargins & margins);
inline bool testAttribute(Qt::WidgetAttribute) const;
void setAttribute(Qt::WidgetAttribute, bool on = true);
bool isAncestorOf(const QWidget * child) const;
void setParent (QWidget * parent);
void setParent (QWidget * parent, Qt::WindowFlags f);
QList<QAction *> actions() const;
void insertActions(QAction * before, const QList<QAction *> & actions);
void addActions( const QList<QAction *> & actions);
void insertAction (QAction * before, QAction * action);
void addAction ( QAction * action);
void removeAction ( QAction * action);
Q_INVOKABLE QPixmap grab(const QRect & rectangle = QRect(QPoint(0, 0),
QSize(-1, -1)));
void grabGesture(Qt::GestureType type,
Qt::GestureFlags flags = Qt::GestureFlags());
void ungrabGesture(Qt::GestureType type);
static QWidget * mouseGrabber (); //关于鼠标
void grabMouse();
void grabMouse(const QCursor &);
void releaseMouse();
static QWidget * keyboardGrabber (); //关于键盘
void grabKeyboard();
void releaseKeyboard();
int grabShortcut(const QKeySequence & key, //快捷键
Qt::ShortcutContext context = Qt::WindowShortcut);
void releaseShortcut(int id);
void setShortcutEnabled (int id, bool enable = true);
void setShortcutAutoRepeat(int id, bool enable = true);
bool underMouse () const;
inline bool isRightToLeft() const { return layoutDirection() == Qt::RightToLeft; }
inline bool isLeftToRight() const { return layoutDirection() == Qt::LeftToRight; }
bool isWindow() const;
QWidget * window() const;
QWindow * windowHandle() const;
QWidget * parentWidget() const;
QWidget * nativeParentWidget() const;
inline QWidget * topLevelWidget() const { return window(); }
QWidget * focusWidget() const;
QWidget * nextInFocusChain () const;
QWidget * previousInFocusChain () const;
static QWidget * find(WId);
inline QWidget * childAt(int x, int y) const;
QWidget * childAt(const QPoint & p) const;
static QWidget * createWindowContainer(QWindow * window,
QWidget * parent=nullptr,
Qt::WindowFlags flags = Qt::WindowFlags());
QPointF mapTo (const QWidget *, const QPointF &) const;
QPoint mapTo (const QWidget *, const QPoint &) const;
QPointF mapToGlobal(const QPointF &) const;
QPoint mapToGlobal(const QPoint &) const;
QPointF mapToParent(const QPointF &) const;
QPoint mapToParent(const QPoint &) const;
QPointF mapFrom (const QWidget *, const QPointF &) const;
QPoint mapFrom (const QWidget *, const QPoint &) const;
QPointF mapFromGlobal(const QPointF &) const;
QPoint mapFromGlobal(const QPoint &) const;
QPointF mapFromParent(const QPointF &) const;
QPoint mapFromParent(const QPoint &) const;
int devType() const override;
inline Qt::WindowType windowType() const;
QBackingStore * backingStore () const;
QPaintEngine * paintEngine () const override; //以下开始各种写函数
void activateWindow();
void stackUnder (QWidget *);
void adjustSize ();
void ensurePolished() const;
void scroll(int dx, int dy);
void scroll(int dx, int dy, const QRect &);
static void setTabOrder (QWidget *, QWidget *);
void setFixedSize (const QSize &);
void setFixedSize (int w, int h);
void setFixedWidth (int w);
void setFixedHeight(int h);
void render(QPaintDevice * target,
const QPoint & targetOffset = QPoint (),
const QRegion & sourceRegion = QRegion(),
RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren));
void render(QPainter * painter,
const QPoint & targetOffset = QPoint(),
const QRegion & sourceRegion = QRegion(),
RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren));
protected: // Event handlers
bool event(QEvent * event) override;
virtual void mousePressEvent(QMouseEvent * event);
virtual void mouseReleaseEvent(QMouseEvent * event);
virtual void mouseDoubleClickEvent(QMouseEvent * event);
virtual void mouseMoveEvent(QMouseEvent * event);
virtual void wheelEvent(QWheelEvent * event);
virtual void keyPressEvent(QKeyEvent * event);
virtual void keyReleaseEvent(QKeyEvent * event);
virtual void focusInEvent(QFocusEvent * event);
virtual void focusOutEvent(QFocusEvent * event);
virtual void enterEvent(QEnterEvent * event);
virtual void leaveEvent(QEvent * event);
virtual void paintEvent(QPaintEvent * event);
virtual void moveEvent(QMoveEvent * event);
virtual void resizeEvent(QResizeEvent * event);
virtual void closeEvent(QCloseEvent * event);
virtual void contextMenuEvent(QContextMenuEvent * event);
virtual void tabletEvent(QTabletEvent * event);
virtual void actionEvent(QActionEvent * event);
virtual void dragEnterEvent(QDragEnterEvent * event);
virtual void dragMoveEvent(QDragMoveEvent * event);
virtual void dragLeaveEvent(QDragLeaveEvent * event);
virtual void dropEvent(QDropEvent * event);
virtual void showEvent(QShowEvent * event);
virtual void hideEvent(QHideEvent * event);
virtual void changeEvent(QEvent * );
virtual bool nativeEvent(const QByteArray & eventType, void * message,
qintptr * result);
virtual void inputMethodEvent(QInputMethodEvent * );
public:
virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const;
protected:
friend class QDataWidgetMapperPrivate; // for access to focusNextPrevChild
virtual bool focusNextPrevChild(bool next);
inline bool focusNextChild() { return focusNextPrevChild(true ); }
inline bool focusPreviousChild() { return focusNextPrevChild(false); }
int metric (PaintDeviceMetric) const override;
QPaintDevice * redirected (QPoint * offset) const override;
QPainter * sharedPainter() const override;
}; //完结 class QWidget : public QObject, public QPaintDevice
Q_DECLARE_OPERATORS_FOR_FLAGS(QWidget::RenderFlags)
QT_END_NAMESPACE
#endif // QWIDGET_H
(3)
谢谢