# Dockable qtWidgets

**URL:** <https://discourse.slicer.org/t/dockable-qtwidgets/37223>\
**Category:** Development\
**Created:** [July 5, 2024, 9:51pm UTC](https://discourse.slicer.org/t/dockable-qtwidgets/37223 "2024-07-05T21:51:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![JASON](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jason/32/13419_2.png) [@JASON](https://discourse.slicer.org/u/JASON)\
**Post date:** [July 5, 2024, 9:51pm UTC](https://discourse.slicer.org/t/dockable-qtwidgets/37223/1 "2024-07-05T21:51:05Z")

</div>

Hello,  
Is it possible to allow floating qtWidget UI to dock into the 3D Slicer interface?  
I notice that every item in the Slicer interface can be dragged & dropped into panels around the viewport.  
Is it possible for me to use the same base same class as the ‘ **Error Log** ’ or ‘ **Python Console** ’ window, which both dock and display ‘_undock_’ and ‘_close_’ buttons when docked?  
 ![Dockable](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/d/9/d9bd68272198bce55ab431cdbaf670d2b01822b5.gif)

```auto
window = qt.QWidget()
window.setWindowTitle('Hello World')
window.show()

```

---

<div class="post-metadata">

**Author:** ![JASON](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jason/32/13419_2.png) [@JASON](https://discourse.slicer.org/u/JASON)\
**Post date:** [July 5, 2024, 9:55pm UTC](https://discourse.slicer.org/t/dockable-qtwidgets/37223/2 "2024-07-05T21:55:20Z")

</div>

Nevermind, ChatGPT help me solve it:

```auto
from __main__ import qt, slicer

# Create a dockable widget
dockWidget = qt.QDockWidget()
dockWidget.setWindowTitle("Hello Dock")
dockWidget.setFeatures(qt.QDockWidget.DockWidgetClosable | qt.QDockWidget.DockWidgetFloatable | qt.QDockWidget.DockWidgetMovable)

# Create a simple widget to put inside the dockable widget
mainWidget = qt.QWidget(dockWidget)
layout = qt.QVBoxLayout(mainWidget)
button = qt.QPushButton("Click me", mainWidget)
layout.addWidget(button)
mainWidget.setLayout(layout)

dockWidget.setWidget(mainWidget)

# Add the dockable widget to the main window
slicer.util.mainWindow().addDockWidget(qt.Qt.LeftDockWidgetArea, dockWidget)

```

---

<div class="post-metadata">

**Author:** ![cpinter](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/cpinter/32/7995_2.png) [@cpinter](https://discourse.slicer.org/u/cpinter)\
**Post date:** [July 8, 2024, 11:06am UTC](https://discourse.slicer.org/t/dockable-qtwidgets/37223/3 "2024-07-08T11:06:11Z")

</div>

Thanks for posting the solution!
