Remove Interaction toolbar from QMRMLSliceWidget

I would like to remove the toolbar from the qMRMLSliceWidget for a cleaner UI for a project I am working on. Is there a way to do this on the widget or should I display the slice by another method.

For reference this is the toolbar I am referring to.

AFAIK there’s no option exposed for that. It would be a bit of a hack (but not unprecedented) to use findChild at the qt in python level to remove the pushpin widget so the popup would never appear.

Thats a good thought. I will try that.

Having trouble finding documentation on the children of QMRMLSliceWidget. Is there somewhere that outlines this? Or a way to get a list of all children? calling findChildren(’*’) yielded empty result.

You could also doing something like this:

for viewName in ["Green", "Red", "Yellow"]:
  slicer.app.layoutManager().sliceWidget(viewName).sliceController().setVisible(False)

You can also use slicer.util.setViewControllersVisible(False) in recent Preview Releases.

If you want to create a Slicer-based application with a customized look&feel then you’ll probably find this page useful: https://www.slicer.org/wiki/Documentation/Nightly/Developers/Slicelets

@Iassoan , I did look into the slicelet templates. I am following basically this approach, but currently building the UI a different way. Having everything for my module on the sidebar and having the layout always visible next to it doesnt work for my application.

I am currently building a guided screen which opens several screens that get some user input, then I display a custom display consisting of QMRMLSliceWidgets.

1 Like

Continuing on this track, I want to add my own interaction widgets to the top of the slice view.

Im considering a few paths.

  1. I create my own widget in c++ that is similar to the qMRMLSliceWidget
    2.I build essentially the same thing in python using qMRMLSliceView - so far I only get a slicer crash when in do a show of a sliceview
    3.I hide the toolbar and simply place my buttons above the qMRMLSliceWidget in my layout.

Any thoughts on these approaches? I think 3 is easiest, but doesnt allow me to embed some of the logic in the view itself, but I havent been able to get very far with option 2.

You can customize widgets in the existing slice controller widgets any way you need: you can hide any built-in widget and add your own, as shown in the examples in script repository.