1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.widgets.widget; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.bytearray; 17 import qt.core.coreevent; 18 import qt.core.flags; 19 import qt.core.global; 20 import qt.core.list; 21 import qt.core.locale; 22 import qt.core.margins; 23 import qt.core.namespace; 24 import qt.core.object; 25 import qt.core.point; 26 import qt.core.rect; 27 import qt.core.size; 28 import qt.core.string; 29 import qt.core.variant; 30 import qt.gui.bitmap; 31 import qt.gui.event; 32 import qt.gui.font; 33 import qt.gui.fontinfo; 34 import qt.gui.fontmetrics; 35 import qt.gui.icon; 36 import qt.gui.paintdevice; 37 import qt.gui.paintengine; 38 import qt.gui.painter; 39 import qt.gui.palette; 40 import qt.gui.pixmap; 41 import qt.gui.region; 42 import qt.gui.screen; 43 import qt.gui.windowdefs; 44 import qt.helpers; 45 import qt.widgets.layout; 46 import qt.widgets.sizepolicy; 47 import qt.widgets.style; 48 version(QT_NO_ACTION){}else 49 import qt.gui.action; 50 version(QT_NO_CURSOR){}else 51 import qt.gui.cursor; 52 version(QT_NO_SHORTCUT){}else 53 import qt.gui.keysequence; 54 55 56 alias QWidgetList = QList!(QWidget); 57 /+ #if QT_CONFIG(shortcut) 58 #endif 59 60 #ifdef QT_INCLUDE_COMPAT 61 #endif +/ 62 63 64 65 extern(C++, class) struct QBackingStore; 66 extern(C++, class) struct QPlatformWindow; 67 extern(C++, class) struct QGraphicsProxyWidget; 68 extern(C++, class) struct QGraphicsEffect; 69 extern(C++, class) struct QRasterWindowSurface; 70 extern(C++, class) struct QUnifiedToolbarSurface; 71 /+ #ifndef QT_NO_DEBUG_STREAM 72 class QDebug; 73 #endif +/ 74 75 extern(C++, class) struct QWidgetData 76 { 77 public: 78 WId winid; 79 uint widget_attributes; 80 /+ Qt:: +/qt.core.namespace.WindowFlags window_flags; 81 /+ uint window_state : 4; +/ 82 uint bitfieldData_window_state; 83 final uint window_state() const 84 { 85 return (bitfieldData_window_state >> 0) & 0xf; 86 } 87 final uint window_state(uint value) 88 { 89 bitfieldData_window_state = (bitfieldData_window_state & ~0xf) | ((value & 0xf) << 0); 90 return value; 91 } 92 /+ uint focus_policy : 4; +/ 93 final uint focus_policy() const 94 { 95 return (bitfieldData_window_state >> 4) & 0xf; 96 } 97 final uint focus_policy(uint value) 98 { 99 bitfieldData_window_state = (bitfieldData_window_state & ~0xf0) | ((value & 0xf) << 4); 100 return value; 101 } 102 /+ uint sizehint_forced :1; +/ 103 final uint sizehint_forced() const 104 { 105 return (bitfieldData_window_state >> 8) & 0x1; 106 } 107 final uint sizehint_forced(uint value) 108 { 109 bitfieldData_window_state = (bitfieldData_window_state & ~0x100) | ((value & 0x1) << 8); 110 return value; 111 } 112 /+ uint is_closing :1; +/ 113 final uint is_closing() const 114 { 115 return (bitfieldData_window_state >> 9) & 0x1; 116 } 117 final uint is_closing(uint value) 118 { 119 bitfieldData_window_state = (bitfieldData_window_state & ~0x200) | ((value & 0x1) << 9); 120 return value; 121 } 122 /+ uint in_show : 1; +/ 123 final uint in_show() const 124 { 125 return (bitfieldData_window_state >> 10) & 0x1; 126 } 127 final uint in_show(uint value) 128 { 129 bitfieldData_window_state = (bitfieldData_window_state & ~0x400) | ((value & 0x1) << 10); 130 return value; 131 } 132 /+ uint in_set_window_state : 1; +/ 133 final uint in_set_window_state() const 134 { 135 return (bitfieldData_window_state >> 11) & 0x1; 136 } 137 final uint in_set_window_state(uint value) 138 { 139 bitfieldData_window_state = (bitfieldData_window_state & ~0x800) | ((value & 0x1) << 11); 140 return value; 141 } 142 /+ mutable uint fstrut_dirty : 1; +/ 143 final uint fstrut_dirty() const 144 { 145 return (bitfieldData_window_state >> 12) & 0x1; 146 } 147 final uint fstrut_dirty(uint value) 148 { 149 bitfieldData_window_state = (bitfieldData_window_state & ~0x1000) | ((value & 0x1) << 12); 150 return value; 151 } 152 /+ uint context_menu_policy : 3; +/ 153 final uint context_menu_policy() const 154 { 155 return (bitfieldData_window_state >> 13) & 0x7; 156 } 157 final uint context_menu_policy(uint value) 158 { 159 bitfieldData_window_state = (bitfieldData_window_state & ~0xe000) | ((value & 0x7) << 13); 160 return value; 161 } 162 /+ uint window_modality : 2; +/ 163 final uint window_modality() const 164 { 165 return (bitfieldData_window_state >> 16) & 0x3; 166 } 167 final uint window_modality(uint value) 168 { 169 bitfieldData_window_state = (bitfieldData_window_state & ~0x30000) | ((value & 0x3) << 16); 170 return value; 171 } 172 /+ uint in_destructor : 1; +/ 173 final uint in_destructor() const 174 { 175 return (bitfieldData_window_state >> 18) & 0x1; 176 } 177 final uint in_destructor(uint value) 178 { 179 bitfieldData_window_state = (bitfieldData_window_state & ~0x40000) | ((value & 0x1) << 18); 180 return value; 181 } 182 /+ uint unused : 13; +/ 183 final uint unused() const 184 { 185 return (bitfieldData_window_state >> 19) & 0x1fff; 186 } 187 final uint unused(uint value) 188 { 189 bitfieldData_window_state = (bitfieldData_window_state & ~0xfff80000) | ((value & 0x1fff) << 19); 190 return value; 191 } 192 QRect crect; 193 /+ mutable +/ QPalette pal; 194 QFont fnt; 195 QRect wrect; 196 } 197 198 extern(C++, class) struct QWidgetPrivate; 199 200 /// Binding for C++ class [QWidget](https://doc.qt.io/qt-6/qwidget.html). 201 class /+ Q_WIDGETS_EXPORT +/ QWidget : QObject, QPaintDeviceInterface 202 { 203 import qt.core.namespace; 204 QPaintDeviceFakeInheritance baseQPaintDeviceInterface; 205 206 mixin(Q_OBJECT); 207 /+ Q_DECLARE_PRIVATE(QWidget) +/ 208 209 /+ Q_PROPERTY(bool modal READ isModal) 210 Q_PROPERTY(Qt::WindowModality windowModality READ windowModality WRITE setWindowModality) 211 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) 212 Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry) 213 Q_PROPERTY(QRect frameGeometry READ frameGeometry) 214 Q_PROPERTY(QRect normalGeometry READ normalGeometry) 215 Q_PROPERTY(int x READ x) 216 Q_PROPERTY(int y READ y) 217 Q_PROPERTY(QPoint pos READ pos WRITE move DESIGNABLE false STORED false) 218 Q_PROPERTY(QSize frameSize READ frameSize) 219 Q_PROPERTY(QSize size READ size WRITE resize DESIGNABLE false STORED false) 220 Q_PROPERTY(int width READ width) 221 Q_PROPERTY(int height READ height) 222 Q_PROPERTY(QRect rect READ rect) 223 Q_PROPERTY(QRect childrenRect READ childrenRect) 224 Q_PROPERTY(QRegion childrenRegion READ childrenRegion) 225 Q_PROPERTY(QSizePolicy sizePolicy READ sizePolicy WRITE setSizePolicy) 226 Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize) 227 Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize) 228 Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth STORED false 229 DESIGNABLE false) 230 Q_PROPERTY(int minimumHeight READ minimumHeight WRITE setMinimumHeight STORED false 231 DESIGNABLE false) 232 Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth STORED false 233 DESIGNABLE false) 234 Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight STORED false 235 DESIGNABLE false) 236 Q_PROPERTY(QSize sizeIncrement READ sizeIncrement WRITE setSizeIncrement) 237 Q_PROPERTY(QSize baseSize READ baseSize WRITE setBaseSize) 238 Q_PROPERTY(QPalette palette READ palette WRITE setPalette) 239 Q_PROPERTY(QFont font READ font WRITE setFont) 240 #ifndef QT_NO_CURSOR 241 Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor) 242 #endif 243 Q_PROPERTY(bool mouseTracking READ hasMouseTracking WRITE setMouseTracking) 244 Q_PROPERTY(bool tabletTracking READ hasTabletTracking WRITE setTabletTracking) 245 Q_PROPERTY(bool isActiveWindow READ isActiveWindow) 246 Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy) 247 Q_PROPERTY(bool focus READ hasFocus) 248 Q_PROPERTY(Qt::ContextMenuPolicy contextMenuPolicy READ contextMenuPolicy WRITE setContextMenuPolicy) 249 Q_PROPERTY(bool updatesEnabled READ updatesEnabled WRITE setUpdatesEnabled DESIGNABLE false) 250 Q_PROPERTY(bool visible READ isVisible WRITE setVisible DESIGNABLE false) 251 Q_PROPERTY(bool minimized READ isMinimized) 252 Q_PROPERTY(bool maximized READ isMaximized) 253 Q_PROPERTY(bool fullScreen READ isFullScreen) 254 Q_PROPERTY(QSize sizeHint READ sizeHint) 255 Q_PROPERTY(QSize minimumSizeHint READ minimumSizeHint) 256 Q_PROPERTY(bool acceptDrops READ acceptDrops WRITE setAcceptDrops) 257 Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle NOTIFY windowTitleChanged) 258 Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon NOTIFY windowIconChanged) 259 Q_PROPERTY(QString windowIconText READ windowIconText WRITE setWindowIconText NOTIFY windowIconTextChanged) // deprecated 260 Q_PROPERTY(double windowOpacity READ windowOpacity WRITE setWindowOpacity) 261 Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified) 262 #if QT_CONFIG(tooltip) 263 Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip) 264 Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration) 265 #endif 266 #if QT_CONFIG(statustip) 267 Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip) 268 #endif 269 #if QT_CONFIG(whatsthis) 270 Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis) 271 #endif 272 #ifndef QT_NO_ACCESSIBILITY 273 Q_PROPERTY(QString accessibleName READ accessibleName WRITE setAccessibleName) 274 Q_PROPERTY(QString accessibleDescription READ accessibleDescription WRITE setAccessibleDescription) 275 #endif 276 Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection) 277 QDOC_PROPERTY(Qt::WindowFlags windowFlags READ windowFlags WRITE setWindowFlags) 278 Q_PROPERTY(bool autoFillBackground READ autoFillBackground WRITE setAutoFillBackground) 279 #ifndef QT_NO_STYLE_STYLESHEET 280 Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet) 281 #endif 282 Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET unsetLocale) 283 Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath) 284 Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints) +/ 285 286 public: 287 enum RenderFlag { 288 DrawWindowBackground = 0x1, 289 DrawChildren = 0x2, 290 IgnoreMask = 0x4 291 } 292 /+ Q_DECLARE_FLAGS(RenderFlags, RenderFlag) +/ 293 alias RenderFlags = QFlags!(RenderFlag); 294 /+ explicit +/this(QWidget parent = null, /+ Qt:: +/qt.core.namespace.WindowFlags f = /+ Qt:: +/qt.core.namespace.WindowFlags()); 295 ~this(); 296 297 override int devType() const; 298 299 final WId winId() const; 300 final void createWinId(); // internal, going away 301 pragma(inline, true) final WId internalWinId() const { return data.winid; } 302 final WId effectiveWinId() const; 303 304 // GUI style setting 305 final QStyle style() const; 306 final void setStyle(QStyle ); 307 // Widget types and states 308 309 /+ #if QT_DEPRECATED_SINCE(6, 1) +/ 310 /+ QT_DEPRECATED_VERSION_X_6_1("Use isWindow()") +/ 311 pragma(inline, true) final bool isTopLevel() const 312 { return (cast(bool)(windowType() & /+ Qt:: +/qt.core.namespace.WindowType.Window)); } 313 /+ #endif +/ 314 pragma(inline, true) final bool isWindow() const 315 { return (cast(bool)(windowType() & /+ Qt:: +/qt.core.namespace.WindowType.Window)); } 316 317 pragma(inline, true) final bool isModal() const 318 { return data.window_modality != /+ Qt:: +/qt.core.namespace.WindowModality.NonModal; } 319 final /+ Qt:: +/qt.core.namespace.WindowModality windowModality() const; 320 final void setWindowModality(/+ Qt:: +/qt.core.namespace.WindowModality windowModality); 321 322 pragma(inline, true) final bool isEnabled() const 323 { return !testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_Disabled); } 324 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 325 final bool isEnabledTo(const(QWidget) ) const; 326 })); 327 328 public /+ Q_SLOTS +/: 329 @QSlot final void setEnabled(bool); 330 @QSlot final void setDisabled(bool); 331 @QSlot final void setWindowModified(bool); 332 333 // Widget coordinates 334 335 public: 336 final QRect frameGeometry() const; 337 pragma(inline, true) final ref const(QRect) geometry() const 338 { return data.crect; } 339 final QRect normalGeometry() const; 340 341 final int x() const; 342 final int y() const; 343 final QPoint pos() const; 344 final QSize frameSize() const; 345 pragma(inline, true) final QSize size() const 346 { return data.crect.size(); } 347 pragma(inline, true) final int width() const 348 { return data.crect.width(); } 349 pragma(inline, true) final int height() const 350 { return data.crect.height(); } 351 pragma(inline, true) final QRect rect() const 352 { return QRect(0,0,data.crect.width(),data.crect.height()); } 353 final QRect childrenRect() const; 354 final QRegion childrenRegion() const; 355 356 final QSize minimumSize() const; 357 final QSize maximumSize() const; 358 pragma(inline, true) final int minimumWidth() const 359 { return minimumSize().width(); } 360 pragma(inline, true) final int minimumHeight() const 361 { return minimumSize().height(); } 362 pragma(inline, true) final int maximumWidth() const 363 { return maximumSize().width(); } 364 pragma(inline, true) final int maximumHeight() const 365 { return maximumSize().height(); } 366 pragma(inline, true) final void setMinimumSize(ref const(QSize) s) 367 { setMinimumSize(s.width(),s.height()); } 368 final void setMinimumSize(int minw, int minh); 369 pragma(inline, true) final void setMaximumSize(ref const(QSize) s) 370 { setMaximumSize(s.width(),s.height()); } 371 final void setMaximumSize(int maxw, int maxh); 372 final void setMinimumWidth(int minw); 373 final void setMinimumHeight(int minh); 374 final void setMaximumWidth(int maxw); 375 final void setMaximumHeight(int maxh); 376 377 /+ #ifdef Q_QDOC 378 void setupUi(QWidget *widget); 379 #endif +/ 380 381 final QSize sizeIncrement() const; 382 pragma(inline, true) final void setSizeIncrement(ref const(QSize) s) 383 { setSizeIncrement(s.width(),s.height()); } 384 final void setSizeIncrement(int w, int h); 385 final QSize baseSize() const; 386 pragma(inline, true) final void setBaseSize(ref const(QSize) s) 387 { setBaseSize(s.width(),s.height()); } 388 final void setBaseSize(int basew, int baseh); 389 390 final void setFixedSize(ref const(QSize) ); 391 final void setFixedSize(int w, int h); 392 final void setFixedWidth(int w); 393 final void setFixedHeight(int h); 394 395 // Widget coordinate mapping 396 397 final QPointF mapToGlobal(ref const(QPointF) ) const; 398 final QPoint mapToGlobal(ref const(QPoint) ) const; 399 final QPointF mapFromGlobal(ref const(QPointF) ) const; 400 final QPoint mapFromGlobal(ref const(QPoint) ) const; 401 final QPointF mapToParent(ref const(QPointF) ) const; 402 final QPoint mapToParent(ref const(QPoint) ) const; 403 final QPointF mapFromParent(ref const(QPointF) ) const; 404 final QPoint mapFromParent(ref const(QPoint) ) const; 405 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 406 final QPointF mapTo(const(QWidget) , ref const(QPointF) ) const; 407 })); 408 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 409 final QPoint mapTo(const(QWidget) , ref const(QPoint) ) const; 410 })); 411 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 412 final QPointF mapFrom(const(QWidget) , ref const(QPointF) ) const; 413 })); 414 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 415 final QPoint mapFrom(const(QWidget) , ref const(QPoint) ) const; 416 })); 417 418 final QWidget window() const; 419 final QWidget nativeParentWidget() const; 420 pragma(inline, true) final QWidget topLevelWidget() const { return window(); } 421 422 // Widget appearance functions 423 final ref const(QPalette) palette() const; 424 final void setPalette(ref const(QPalette) ); 425 426 final void setBackgroundRole(QPalette.ColorRole); 427 final QPalette.ColorRole backgroundRole() const; 428 429 final void setForegroundRole(QPalette.ColorRole); 430 final QPalette.ColorRole foregroundRole() const; 431 432 pragma(inline, true) final ref const(QFont) font() const 433 { return data.fnt; } 434 final void setFont(ref const(QFont) ); 435 pragma(inline, true) final QFontMetrics fontMetrics() const 436 { auto tmp = data.fnt; return QFontMetrics(tmp); } 437 pragma(inline, true) final QFontInfo fontInfo() const 438 { auto tmp = data.fnt; return QFontInfo(tmp); } 439 440 version(QT_NO_CURSOR){}else 441 { 442 final QCursor cursor() const; 443 final void setCursor(ref const(QCursor) ); 444 final void unsetCursor(); 445 } 446 447 pragma(inline, true) final void setMouseTracking(bool enable) 448 { setAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_MouseTracking, enable); } 449 pragma(inline, true) final bool hasMouseTracking() const 450 { return testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_MouseTracking); } 451 pragma(inline, true) final bool underMouse() const 452 { return testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_UnderMouse); } 453 454 pragma(inline, true) final void setTabletTracking(bool enable) 455 { setAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_TabletTracking, enable); } 456 pragma(inline, true) final bool hasTabletTracking() const 457 { return testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_TabletTracking); } 458 459 final void setMask(ref const(QBitmap) ); 460 final void setMask(ref const(QRegion) ); 461 final QRegion mask() const; 462 final void clearMask(); 463 464 final void render(QPaintDevice target, ref const(QPoint) targetOffset = globalInitVar!QPoint, 465 ref const(QRegion) sourceRegion = globalInitVar!QRegion, 466 RenderFlags renderFlags = RenderFlags(RenderFlag.DrawWindowBackground | RenderFlag.DrawChildren)); 467 468 final void render(QPainter* painter, ref const(QPoint) targetOffset = globalInitVar!QPoint, 469 ref const(QRegion) sourceRegion = globalInitVar!QRegion, 470 RenderFlags renderFlags = RenderFlags(RenderFlag.DrawWindowBackground | RenderFlag.DrawChildren)); 471 472 @QInvokable final QPixmap grab(ref const(QRect) rectangle /+ = QRect(QPoint(0, 0), QSize(-1, -1)) +/); 473 474 /+ #if QT_CONFIG(graphicseffect) +/ 475 final QGraphicsEffect* graphicsEffect() const; 476 final void setGraphicsEffect(QGraphicsEffect* effect); 477 /+ #endif // QT_CONFIG(graphicseffect) 478 479 #ifndef QT_NO_GESTURES +/ 480 version(QT_NO_GESTURES){}else 481 { 482 final void grabGesture(/+ Qt:: +/qt.core.namespace.GestureType type, /+ Qt:: +/qt.core.namespace.GestureFlags flags = /+ Qt:: +/qt.core.namespace.GestureFlags()); 483 final void ungrabGesture(/+ Qt:: +/qt.core.namespace.GestureType type); 484 } 485 /+ #endif +/ 486 487 public /+ Q_SLOTS +/: 488 @QSlot final void setWindowTitle(ref const(QString) ); 489 version(QT_NO_STYLE_STYLESHEET){}else 490 { 491 @QSlot final void setStyleSheet(ref const(QString) styleSheet); 492 } 493 public: 494 version(QT_NO_STYLE_STYLESHEET){}else 495 { 496 final QString styleSheet() const; 497 } 498 final QString windowTitle() const; 499 final void setWindowIcon(ref const(QIcon) icon); 500 final QIcon windowIcon() const; 501 final void setWindowIconText(ref const(QString) ); 502 final QString windowIconText() const; 503 final void setWindowRole(ref const(QString) ); 504 final QString windowRole() const; 505 final void setWindowFilePath(ref const(QString) filePath); 506 final QString windowFilePath() const; 507 508 final void setWindowOpacity(qreal level); 509 final qreal windowOpacity() const; 510 511 final bool isWindowModified() const; 512 /+ #if QT_CONFIG(tooltip) +/ 513 final void setToolTip(ref const(QString) ); 514 final QString toolTip() const; 515 final void setToolTipDuration(int msec); 516 final int toolTipDuration() const; 517 /+ #endif 518 #if QT_CONFIG(statustip) +/ 519 final void setStatusTip(ref const(QString) ); 520 final QString statusTip() const; 521 /+ #endif 522 #if QT_CONFIG(whatsthis) +/ 523 final void setWhatsThis(ref const(QString) ); 524 final QString whatsThis() const; 525 /+ #endif 526 #ifndef QT_NO_ACCESSIBILITY +/ 527 version(QT_NO_ACCESSIBILITY){}else 528 { 529 final QString accessibleName() const; 530 final void setAccessibleName(ref const(QString) name); 531 final QString accessibleDescription() const; 532 final void setAccessibleDescription(ref const(QString) description); 533 } 534 /+ #endif +/ 535 536 final void setLayoutDirection(/+ Qt:: +/qt.core.namespace.LayoutDirection direction); 537 final /+ Qt:: +/qt.core.namespace.LayoutDirection layoutDirection() const; 538 final void unsetLayoutDirection(); 539 540 final void setLocale(ref const(QLocale) locale); 541 final QLocale locale() const; 542 final void unsetLocale(); 543 544 pragma(inline, true) final bool isRightToLeft() const { return layoutDirection() == /+ Qt:: +/qt.core.namespace.LayoutDirection.RightToLeft; } 545 pragma(inline, true) final bool isLeftToRight() const { return layoutDirection() == /+ Qt:: +/qt.core.namespace.LayoutDirection.LeftToRight; } 546 547 public /+ Q_SLOTS +/: 548 pragma(inline, true) @QSlot final void setFocus() { setFocus(/+ Qt:: +/qt.core.namespace.FocusReason.OtherFocusReason); } 549 550 public: 551 final bool isActiveWindow() const; 552 final void activateWindow(); 553 final void clearFocus(); 554 555 final void setFocus(/+ Qt:: +/qt.core.namespace.FocusReason reason); 556 final /+ Qt:: +/qt.core.namespace.FocusPolicy focusPolicy() const; 557 final void setFocusPolicy(/+ Qt:: +/qt.core.namespace.FocusPolicy policy); 558 final bool hasFocus() const; 559 static void setTabOrder(QWidget , QWidget ); 560 final void setFocusProxy(QWidget ); 561 final QWidget focusProxy() const; 562 final /+ Qt:: +/qt.core.namespace.ContextMenuPolicy contextMenuPolicy() const; 563 final void setContextMenuPolicy(/+ Qt:: +/qt.core.namespace.ContextMenuPolicy policy); 564 565 // Grab functions 566 final void grabMouse(); 567 version(QT_NO_CURSOR){}else 568 { 569 final void grabMouse(ref const(QCursor) ); 570 } 571 final void releaseMouse(); 572 final void grabKeyboard(); 573 final void releaseKeyboard(); 574 version(QT_NO_SHORTCUT){}else 575 { 576 final int grabShortcut(ref const(QKeySequence) key, /+ Qt:: +/qt.core.namespace.ShortcutContext context = /+ Qt:: +/qt.core.namespace.ShortcutContext.WindowShortcut); 577 final void releaseShortcut(int id); 578 final void setShortcutEnabled(int id, bool enable = true); 579 final void setShortcutAutoRepeat(int id, bool enable = true); 580 } 581 static QWidget mouseGrabber(); 582 static QWidget keyboardGrabber(); 583 584 // Update/refresh functions 585 pragma(inline, true) final bool updatesEnabled() const 586 { return !testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_UpdatesDisabled); } 587 final void setUpdatesEnabled(bool enable); 588 589 /+ #if QT_CONFIG(graphicsview) +/ 590 final QGraphicsProxyWidget* graphicsProxyWidget() const; 591 /+ #endif +/ 592 593 public /+ Q_SLOTS +/: 594 @QSlot final void update(); 595 @QSlot final void repaint(); 596 597 public: 598 pragma(inline, true) final void update(int ax, int ay, int aw, int ah) 599 { auto tmp = QRect(ax, ay, aw, ah); update(tmp); } 600 final void update(ref const(QRect)); 601 final void update(ref const(QRegion)); 602 603 final void repaint(int x, int y, int w, int h); 604 final void repaint(ref const(QRect) ); 605 final void repaint(ref const(QRegion) ); 606 607 public /+ Q_SLOTS +/: 608 // Widget management functions 609 610 /+ virtual +/ @QSlot void setVisible(bool visible); 611 @QSlot final void setHidden(bool hidden); 612 @QSlot final void show(); 613 @QSlot final void hide(); 614 615 @QSlot final void showMinimized(); 616 @QSlot final void showMaximized(); 617 @QSlot final void showFullScreen(); 618 @QSlot final void showNormal(); 619 620 @QSlot final bool close(); 621 @QSlot final void raise(); 622 @QSlot final void lower(); 623 624 public: 625 final void stackUnder(QWidget); 626 pragma(inline, true) final void move(int ax, int ay) 627 { auto tmp = QPoint(ax, ay); move(tmp); } 628 final void move(ref const(QPoint) ); 629 pragma(inline, true) final void resize(int w, int h) 630 { auto tmp = QSize(w, h); resize(tmp); } 631 final void resize(ref const(QSize) ); 632 pragma(inline, true) final void setGeometry(int ax, int ay, int aw, int ah) 633 { auto tmp = QRect(ax, ay, aw, ah); setGeometry(tmp); } 634 final void setGeometry(ref const(QRect) ); 635 final QByteArray saveGeometry() const; 636 final bool restoreGeometry(ref const(QByteArray) geometry); 637 final void adjustSize(); 638 pragma(inline, true) final bool isVisible() const 639 { return testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_WState_Visible); } 640 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 641 final bool isVisibleTo(const(QWidget) ) const; 642 })); 643 pragma(inline, true) final bool isHidden() const 644 { return testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute.WA_WState_Hidden); } 645 646 final bool isMinimized() const; 647 final bool isMaximized() const; 648 final bool isFullScreen() const; 649 650 final /+ Qt:: +/qt.core.namespace.WindowStates windowState() const; 651 final void setWindowState(/+ Qt:: +/qt.core.namespace.WindowStates state); 652 final void overrideWindowState(/+ Qt:: +/qt.core.namespace.WindowStates state); 653 654 /+ virtual +/ QSize sizeHint() const; 655 /+ virtual +/ QSize minimumSizeHint() const; 656 657 final QSizePolicy sizePolicy() const; 658 final void setSizePolicy(QSizePolicy); 659 /+ pragma(inline, true) final void setSizePolicy(QSizePolicy.Policy hor, QSizePolicy.Policy ver) 660 { setSizePolicy(QSizePolicy(hor, ver)); } 661 +/ 662 /+ virtual +/ int heightForWidth(int) const; 663 /+ virtual +/ bool hasHeightForWidth() const; 664 665 final QRegion visibleRegion() const; 666 667 final void setContentsMargins(int left, int top, int right, int bottom); 668 final void setContentsMargins(ref const(QMargins) margins); 669 final QMargins contentsMargins() const; 670 671 final QRect contentsRect() const; 672 673 public: 674 final QLayout layout() const; 675 final void setLayout(QLayout ); 676 final void updateGeometry(); 677 678 final void setParent(QWidget parent); 679 final void setParent(QWidget parent, /+ Qt:: +/qt.core.namespace.WindowFlags f); 680 681 final void scroll(int dx, int dy); 682 final void scroll(int dx, int dy, ref const(QRect)); 683 684 // Misc. functions 685 686 final QWidget focusWidget() const; 687 final QWidget nextInFocusChain() const; 688 final QWidget previousInFocusChain() const; 689 690 // drag and drop 691 final bool acceptDrops() const; 692 final void setAcceptDrops(bool on); 693 694 version(QT_NO_ACTION){}else 695 { 696 //actions 697 final void addAction(QAction action); 698 final void addActions(ref const(QList!(QAction)) actions); 699 final void insertActions(QAction before, ref const(QList!(QAction)) actions); 700 final void insertAction(QAction before, QAction action); 701 final void removeAction(QAction action); 702 final QList!(QAction) actions() const; 703 } 704 705 pragma(inline, true) final QWidget parentWidget() const 706 { return static_cast!(QWidget)(QObject.parent()); } 707 708 final void setWindowFlags(/+ Qt:: +/qt.core.namespace.WindowFlags type); 709 pragma(inline, true) final /+ Qt:: +/qt.core.namespace.WindowFlags windowFlags() const 710 { return data.window_flags; } 711 final void setWindowFlag(/+ Qt:: +/qt.core.namespace.WindowType, bool on = true); 712 final void overrideWindowFlags(/+ Qt:: +/qt.core.namespace.WindowFlags type); 713 714 pragma(inline, true) final /+ Qt:: +/qt.core.namespace.WindowType windowType() const 715 { return static_cast!(/+ Qt:: +/qt.core.namespace.WindowType)(int((data.window_flags & /+ Qt:: +/qt.core.namespace.WindowType.WindowType_Mask))); } 716 717 /+ static QWidget *find(WId); +/ 718 pragma(inline, true) final QWidget childAt(int ax, int ay) const 719 { auto tmp = QPoint(ax, ay); return childAt(tmp); } 720 final QWidget childAt(ref const(QPoint) p) const; 721 722 final void setAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute, bool on = true); 723 pragma(inline, true) final bool testAttribute(/+ Qt:: +/qt.core.namespace.WidgetAttribute attribute) const 724 { 725 if (attribute < cast(int)(8*uint.sizeof)) 726 return (data.widget_attributes & (1<<attribute)) != 0; 727 return testAttribute_helper(attribute); 728 } 729 730 override QPaintEngine paintEngine() const; 731 732 final void ensurePolished() const; 733 734 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 735 final bool isAncestorOf(const(QWidget) child) const; 736 })); 737 738 version(QT_KEYPAD_NAVIGATION) 739 { 740 final bool hasEditFocus() const; 741 final void setEditFocus(bool on); 742 } 743 744 final bool autoFillBackground() const; 745 final void setAutoFillBackground(bool enabled); 746 747 final QBackingStore* backingStore() const; 748 749 final QWindow* windowHandle() const; 750 final QScreen screen() const; 751 final void setScreen(QScreen ); 752 753 static QWidget createWindowContainer(QWindow* window, QWidget parent=null, /+ Qt:: +/qt.core.namespace.WindowFlags flags=/+ Qt:: +/qt.core.namespace.WindowFlags()); 754 755 /+ Q_SIGNALS +/public: 756 @QSignal final void windowTitleChanged(ref const(QString) title); 757 @QSignal final void windowIconChanged(ref const(QIcon) icon); 758 @QSignal final void windowIconTextChanged(ref const(QString) iconText); 759 @QSignal final void customContextMenuRequested(ref const(QPoint) pos); 760 761 protected: 762 // Event handlers 763 override bool event(QEvent event); 764 /+ virtual +/ void mousePressEvent(QMouseEvent event); 765 /+ virtual +/ void mouseReleaseEvent(QMouseEvent event); 766 /+ virtual +/ void mouseDoubleClickEvent(QMouseEvent event); 767 /+ virtual +/ void mouseMoveEvent(QMouseEvent event); 768 /+ #if QT_CONFIG(wheelevent) +/ 769 /+ virtual +/ void wheelEvent(QWheelEvent event); 770 /+ #endif +/ 771 /+ virtual +/ void keyPressEvent(QKeyEvent event); 772 /+ virtual +/ void keyReleaseEvent(QKeyEvent event); 773 /+ virtual +/ void focusInEvent(QFocusEvent event); 774 /+ virtual +/ void focusOutEvent(QFocusEvent event); 775 /+ virtual +/ void enterEvent(QEnterEvent event); 776 /+ virtual +/ void leaveEvent(QEvent event); 777 /+ virtual +/ void paintEvent(QPaintEvent event); 778 /+ virtual +/ void moveEvent(QMoveEvent event); 779 /+ virtual +/ void resizeEvent(QResizeEvent event); 780 /+ virtual +/ void closeEvent(QCloseEvent event); 781 /+ #ifndef QT_NO_CONTEXTMENU +/ 782 version(QT_NO_CONTEXTMENU){}else 783 { 784 /+ virtual +/ void contextMenuEvent(QContextMenuEvent event); 785 } 786 /+ #endif 787 #if QT_CONFIG(tabletevent) +/ 788 /+ virtual +/ void tabletEvent(QTabletEvent event); 789 /+ #endif 790 #ifndef QT_NO_ACTION +/ 791 version(QT_NO_ACTION){}else 792 { 793 /+ virtual +/ void actionEvent(QActionEvent event); 794 } 795 /+ #endif 796 797 #if QT_CONFIG(draganddrop) +/ 798 /+ virtual +/ void dragEnterEvent(QDragEnterEvent event); 799 /+ virtual +/ void dragMoveEvent(QDragMoveEvent event); 800 /+ virtual +/ void dragLeaveEvent(QDragLeaveEvent event); 801 /+ virtual +/ void dropEvent(QDropEvent event); 802 /+ #endif +/ 803 804 /+ virtual +/ void showEvent(QShowEvent event); 805 /+ virtual +/ void hideEvent(QHideEvent event); 806 807 /+ virtual +/ bool nativeEvent(ref const(QByteArray) eventType, void* message, qintptr* result); 808 809 // Misc. protected functions 810 /+ virtual +/ void changeEvent(QEvent ); 811 812 override int metric(PaintDeviceMetric) const; 813 override void initPainter(QPainter* painter) const; 814 override QPaintDevice redirected(QPoint* offset) const; 815 override QPainter* sharedPainter() const; 816 817 /+ virtual +/ void inputMethodEvent(QInputMethodEvent ); 818 public: 819 /+ virtual +/ QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery) const; 820 821 final /+ Qt:: +/qt.core.namespace.InputMethodHints inputMethodHints() const; 822 final void setInputMethodHints(/+ Qt:: +/qt.core.namespace.InputMethodHints hints); 823 824 protected /+ Q_SLOTS +/: 825 @QSlot final void updateMicroFocus(/+ Qt:: +/qt.core.namespace.InputMethodQuery query = /+ Qt:: +/qt.core.namespace.InputMethodQuery.ImQueryAll); 826 protected: 827 828 /+ void create(WId = 0, bool initializeWindow = true, 829 bool destroyOldWindow = true); +/ 830 final void destroy(bool destroyWindow = true, 831 bool destroySubWindows = true); 832 833 /+ friend class QDataWidgetMapperPrivate; +/ // for access to focusNextPrevChild 834 /+ virtual +/ bool focusNextPrevChild(bool next); 835 pragma(inline, true) final bool focusNextChild() { return focusNextPrevChild(true); } 836 pragma(inline, true) final bool focusPreviousChild() { return focusNextPrevChild(false); } 837 838 protected: 839 this(ref QWidgetPrivate d, QWidget parent, /+ Qt:: +/qt.core.namespace.WindowFlags f); 840 private: 841 final void setBackingStore(QBackingStore* store); 842 843 final bool testAttribute_helper(/+ Qt:: +/qt.core.namespace.WidgetAttribute) const; 844 845 final QLayout takeLayout(); 846 847 /+ friend class QBackingStoreDevice; +/ 848 /+ friend class QWidgetRepaintManager; +/ 849 /+ friend class QApplication; +/ 850 /+ friend class QApplicationPrivate; +/ 851 /+ friend class QGuiApplication; +/ 852 /+ friend class QGuiApplicationPrivate; +/ 853 /+ friend class QBaseApplication; +/ 854 /+ friend class QPainter; +/ 855 /+ friend class QPainterPrivate; +/ 856 /+ friend class QPixmap; +/ // for QPixmap::fill() 857 /+ friend class QFontMetrics; +/ 858 /+ friend class QFontInfo; +/ 859 /+ friend class QLayout; +/ 860 /+ friend class QWidgetItem; +/ 861 /+ friend class QWidgetItemV2; +/ 862 /+ friend class QX11PaintEngine; +/ 863 /+ friend class QWin32PaintEngine; +/ 864 /+ friend class QShortcutPrivate; +/ 865 /+ friend class QWindowSurface; +/ 866 /+ friend class QGraphicsProxyWidget; +/ 867 /+ friend class QGraphicsProxyWidgetPrivate; +/ 868 /+ friend class QStyleSheetStyle; +/ 869 /+ friend struct QWidgetExceptionCleaner; +/ 870 /+ friend class QWidgetWindow; +/ 871 /+ friend class QAccessibleWidget; +/ 872 /+ friend class QAccessibleTable; +/ 873 /+ friend class QAccessibleTabButton; +/ 874 version(QT_NO_GESTURES){}else 875 { 876 /+ friend class QGestureManager; +/ 877 /+ friend class QWinNativePanGestureRecognizer; +/ 878 } 879 /+ friend class QWidgetEffectSourcePrivate; +/ 880 881 static if((versionIsSet!("OSX") || versionIsSet!("iOS") || versionIsSet!("TVOS") || versionIsSet!("WatchOS"))) 882 { 883 /+ friend bool qt_mac_is_metal(const QWidget *w); +/ 884 } 885 /+ friend Q_WIDGETS_EXPORT QWidgetData *qt_qwidget_data(QWidget *widget); +/ 886 /+ friend Q_WIDGETS_EXPORT QWidgetPrivate *qt_widget_private(QWidget *widget); +/ 887 888 private: 889 /+ Q_DISABLE_COPY(QWidget) +/ 890 /+ Q_PRIVATE_SLOT(d_func(), void _q_showIfNotHidden()) 891 Q_PRIVATE_SLOT(d_func(), QWindow *_q_closestWindowHandle()) +/ 892 893 QWidgetData* data; 894 mixin(CREATE_CONVENIENCE_WRAPPERS); 895 } 896 /+pragma(inline, true) QFlags!(QWidget.RenderFlags.enum_type) operator |(QWidget.RenderFlags.enum_type f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/{return QFlags!(QWidget.RenderFlags.enum_type)(f1)|f2;}+/ 897 /+pragma(inline, true) QFlags!(QWidget.RenderFlags.enum_type) operator |(QWidget.RenderFlags.enum_type f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 898 /+pragma(inline, true) QFlags!(QWidget.RenderFlags.enum_type) operator &(QWidget.RenderFlags.enum_type f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/{return QFlags!(QWidget.RenderFlags.enum_type)(f1)&f2;}+/ 899 /+pragma(inline, true) QFlags!(QWidget.RenderFlags.enum_type) operator &(QWidget.RenderFlags.enum_type f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 900 /+pragma(inline, true) void operator +(QWidget.RenderFlags.enum_type f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/;+/ 901 /+pragma(inline, true) void operator +(QWidget.RenderFlags.enum_type f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/;+/ 902 /+pragma(inline, true) void operator +(int f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/;+/ 903 /+pragma(inline, true) void operator -(QWidget.RenderFlags.enum_type f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/;+/ 904 /+pragma(inline, true) void operator -(QWidget.RenderFlags.enum_type f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/;+/ 905 /+pragma(inline, true) void operator -(int f1, QFlags!(QWidget.RenderFlags.enum_type) f2)/+noexcept+/;+/ 906 /+pragma(inline, true) QIncompatibleFlag operator |(QWidget.RenderFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 907 /+pragma(inline, true) void operator +(int f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/;+/ 908 /+pragma(inline, true) void operator +(QWidget.RenderFlags.enum_type f1, int f2)/+noexcept+/;+/ 909 /+pragma(inline, true) void operator -(int f1, QWidget.RenderFlags.enum_type f2)/+noexcept+/;+/ 910 /+pragma(inline, true) void operator -(QWidget.RenderFlags.enum_type f1, int f2)/+noexcept+/;+/ 911 912 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QWidget::RenderFlags) 913 #ifndef Q_QDOC 914 template <> inline QWidget *qobject_cast<QWidget*>(QObject *o) 915 { 916 if (!o || !o->isWidgetType()) return nullptr; 917 return static_cast<QWidget*>(o); 918 } 919 template <> inline const QWidget *qobject_cast<const QWidget*>(const QObject *o) 920 { 921 if (!o || !o->isWidgetType()) return nullptr; 922 return static_cast<const QWidget*>(o); 923 } 924 #endif // !Q_QDOC 925 926 #if QT_DEPRECATED_SINCE(6, 1) 927 #endif 928 929 930 #define QWIDGETSIZE_MAX ((1<<24)-1) 931 932 #ifndef QT_NO_DEBUG_STREAM 933 Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QWidget *); 934 #endif +/ 935