# Orthogonal and Oblique MPR Slicing and Fusion

**URL:** <https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530>\
**Category:** Development\
**Tags:** registration, segmentation, dicom\
**Created:** [November 10, 2020, 9:01pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530 "2020-11-10T21:01:08Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 8:46pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/41 "2020-12-11T20:46:58Z")

</div>

If I could do this I could give some recognition to the Slicer team to Mayo.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 8:51pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/42 "2020-12-11T20:51:34Z")

</div>

@pieper

OK, I’ll give that some thought. Has anyone else done something similar?

---

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [December 11, 2020, 8:59pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/43 "2020-12-11T20:59:54Z")

</div>

> One of their big requests was to have the UI look and feel match that of our QREADS application as much as possible.

@spycolyf This make sense. I just sent you a direct message with some suggestions to move forward with this by collaborating with Kitware.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 9:34pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/44 "2020-12-11T21:34:53Z")

</div>

@jcfr OK, I’ll take a look.

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [December 11, 2020, 9:45pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/45 "2020-12-11T21:45:08Z")

</div>

There are several examples in the Slicer tests that could serve as inspiration. Or if you can get help from experts, as @jcfr suggests that could really help get you over the initial hurdles and customize from there.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 10:00pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/46 "2020-12-11T22:00:44Z")

</div>

The first hurdle for me is to have a successful process for downloading source code and get it running successfully. I’ll try to get Slicer working in debug mode inside of Visual Studio 2017. Is that doable with some ease?

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [December 11, 2020, 10:11pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/47 "2020-12-11T22:11:52Z")

</div>

I haven’t used 2017 in a while, but I have used VS 2019 with no problems lately. Building Slicer can be a challenge when you try to improvise, but if you follow the instructions exactly you should have no problems.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 11:17pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/48 "2020-12-11T23:17:22Z")

</div>

@pieper - Oh. Did I miss some thing? Where are those instructions. I 'll look on the website. Thanks.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [December 11, 2020, 11:21pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/49 "2020-12-11T23:21:42Z")

</div>

Build instructions are here: [https://slicer.readthedocs.io/en/latest/developer\_guide/build\_instructions/index.html](https://slicer.readthedocs.io/en/latest/developer_guide/build_instructions/index.html)

You cam start with this to ensure you have set up everything correctly, and then [create a custom application](https://blog.kitware.com/slicercat-creating-custom-applications-based-on-3d-slicer/), where you can customize everything in C++.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [December 11, 2020, 11:32pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/50 "2020-12-11T23:32:18Z")

</div>

@lassoan, @pieper, @jcfr

Cool! I’ll keep you posted. You are so good and generous with your time. Thank you and have a great weekend and stay safe.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 18, 2021, 6:27pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/51 "2021-01-18T18:27:32Z")

</div>

Hello @lassoan @jcfr @pieper, @Sankhesh_Jhaveri

I’ve been off learning QT Creator and I built Slicer Release and debug. Wow! QT is powerful and Slicer is huge! I’m looking at the Slicer code in VS 2019. It’s overwhelming.

QT is the best and most flexible visual IDE WYSIWYG that I’ve used in my career. Here’s what I did with it so far. I designed the QREADS Toolbar…

 ![QTQREADSToolBar](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/6/8/68e181ad7713ad8027d8e2fe663221c94ccd2117.jpeg)

After I create all of my widgets, if I want to use the resulting .ui file in Visual Studio, do I need to write any C++ code in QT? Or is all of the coding done in VS? Or a combination? If the coding is only done in VS, then I guess I’m done with using QT Creator, correct?

Thanks.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 18, 2021, 6:53pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/52 "2021-01-18T18:53:21Z")

</div>

Hello Hello @lassoan @jcfr @pieper, @Sankhesh_Jhaveri,

I would like to introduce Liqin Wang (@Liqin), who is my teammate on this project. She is also a Mayo IT employee and she will be joining in at some point after she’s done with her current priority project working on our specialized DICOM receiver, processor and short term storage. She has some ITK experience.

Thanks

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 18, 2021, 6:54pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/53 "2021-01-18T18:54:56Z")

</div>

Thanks for the introduction.

@Liqin welcome to the Slicer community! Let us know if we can help with anything.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 25, 2021, 3:53pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/54 "2021-01-25T15:53:48Z")

</div>

@Sankhesh_Jhaveri, @lassoan

I’ve spent a couple of days trying to get a my QPushButton to fire and signal and recognizing a slot. The strange thing is I’ve gotten gotten other button to work perfectly, and I set up this button the same exact way as the ones that work. But when the connect statement is executed on this one I get …

```auto
QObject::connect: No such slot QtVTKApp::setWidgetsEnabled()

```

I read something in StackOverflow that referenced the “moc\_classname.cpp” file. Should that file be recreated every time I build? And if so, what do I do to fix it if it’s not recreating? Please let me know if you need clarification. Thanks.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 25, 2021, 6:10pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/56 "2021-01-25T18:10:33Z")

</div>

[![](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/90.png)](https://discourse.slicer.org/u/spycolyf)

[spycolyf](https://discourse.slicer.org/u/spycolyf)[Doug Porter](https://discourse.slicer.org/u/spycolyf)

[2h](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/55)

Here is the statement that generates the “No such slot” message…

```auto
connect(this->ui->setWidgetsEnabledToggle, SIGNAL(pressed()), this, SLOT(setWidgetsEnabled()));

virtual void setWidgetsEnabled();

```

the clickable property is set to true to make it a toggle.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 25, 2021, 7:22pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/57 "2021-01-25T19:22:55Z")

</div>

> [@spycolyf](#):
>
> QObject::connect: No such slot QtVTKApp::setWidgetsEnabled()

I don’t know what is a QtVTKApp, probably it is an alternative to a Slicer-based application. We can help with debugging issues that you can reproduce in Slicer.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 25, 2021, 8:44pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/58 "2021-01-25T20:44:45Z")

</div>

@lassoan @jcfr @pieper

Thanks for your response @lassoan. I just solve my problem. FYI: QtVTKApp is just a generic name I made up just to use as an example for this post.

I found my problem. Lesson learned: You can’t just make a copy of a VS C++ QT project and try to work from that copy without changing a bunch of paths in a few project files (my ignorance for not knowing CMake.)

The Meta-Object Compiler (MOC) is what makes signals and slots work and it’s automatically launched whenever you build a QT project in Visual Studio C++; and because I was working from a copy of the original project, the MOC AutogenInfo.json contained paths to the wrong mocs\_compilation.cpp and other files. As a result, I was seeing no change when adding new events, and the new slots were not recognized. So I had to modify the AutogenInfo.json file to point to the current project and it worked fine afterwards.

I hope this can help others, but knowing CMake would help the most.

Thanks.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 25, 2021, 8:46pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/59 "2021-01-25T20:46:49Z")

</div>

I see, it makes sense. It’s good that you could figure it out. We’ll try to be more helpful next time.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 26, 2021, 4:04pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/60 "2021-01-26T16:04:00Z")

</div>

> [@lassoan](#):
>
> We’ll try to be more helpful next time.

@lassoan @jcfr @pieper,

No no, I don’t expect you to have solutions to all of my dumb mistakes. My apologies for taking up so much of your time. I’m just happy that I can contribute my issues and solutions to the forum to help others.

---

<div class="post-metadata">

**Author:** ![spycolyf](https://avatars.discourse-cdn.com/v4/letter/s/f17d59/32.png) [@spycolyf](https://discourse.slicer.org/u/spycolyf)\
**Post date:** [January 26, 2021, 9:35pm UTC](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530/61 "2021-01-26T21:35:26Z")

</div>

@lassoan @pieper @Sankhesh_Jhaveri

Hi, I’m trying to dynamically change the window level of images after I push button to change the W/L.

```auto
 vtkSmartPointer< vtkResliceImageViewer > riw;

```

… read in and displayed images.

```auto
riw->GetWindowLevel()->SetWindow(400);
riw->GetWindowLevel()->SetLevel(40);|
riw->Render();

```

This does not display the new W/L immediately but does so when I use the mouse interactively. I.e., after the code is executed there is no change; then when I press the left button down and move the mouse, the new W/L shows.

What is the correct way to accomplish this?

[Previous page](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530.md?page=2)

[Next page](https://discourse.slicer.org/t/orthogonal-and-oblique-mpr-slicing-and-fusion/14530.md?page=4)
