<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Slicer%3ADeveloper_Meetings%3A20090916</id>
	<title>Slicer:Developer Meetings:20090916 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Slicer%3ADeveloper_Meetings%3A20090916"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer:Developer_Meetings:20090916&amp;action=history"/>
	<updated>2026-04-21T19:05:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer:Developer_Meetings:20090916&amp;diff=10705&amp;oldid=prev</id>
		<title>Nicole: Created page with '== Goal ==  Discuss feasibility of migrating Slicer3 to use Qt widgets. Joint meeting with Kitware, agenda here: [http://www.na-mic.org/Wiki/index.php/Sept-2009-SlicerWidgetsBrai…'</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer:Developer_Meetings:20090916&amp;diff=10705&amp;oldid=prev"/>
		<updated>2009-09-18T14:16:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Goal ==  Discuss feasibility of migrating Slicer3 to use Qt widgets. Joint meeting with Kitware, agenda here: [http://www.na-mic.org/Wiki/index.php/Sept-2009-SlicerWidgetsBrai…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
Discuss feasibility of migrating Slicer3 to use Qt widgets. Joint meeting with Kitware, agenda here: [http://www.na-mic.org/Wiki/index.php/Sept-2009-SlicerWidgetsBrainstorm Sept 2009 Slicer Widgets Brainstorm]&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
# Will Schroeder&lt;br /&gt;
#  Steve Pieper&lt;br /&gt;
#  Ron Kikinis&lt;br /&gt;
#  Nicole Aucoin&lt;br /&gt;
#  Alex Yarmarkovich (Wed only)&lt;br /&gt;
#  Sebastien Barre&lt;br /&gt;
#  JC Fillion&lt;br /&gt;
#  Katie Hayes&lt;br /&gt;
#  Andriy Fedorov&lt;br /&gt;
#  Junichi Tokuda (Thu only) &lt;br /&gt;
&lt;br /&gt;
== Rough Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Wed Sept 16/09&lt;br /&gt;
- Qt meeting with Kitware&lt;br /&gt;
General&lt;br /&gt;
   - need to demonstrate better usability&lt;br /&gt;
   - cmtk is qt based widget ste, general gui widgets, but separate library to compile. Should focus on Slicer stuff.&lt;br /&gt;
   - medInria is being re-written (includes a software self updater)&lt;br /&gt;
   - paraview some widgets are autogenerated&lt;br /&gt;
   - automated testing: squish works with Qt, used at Kitware&lt;br /&gt;
Qt:&lt;br /&gt;
   - slot: does things (proc, method)&lt;br /&gt;
   - signal: something changed&lt;br /&gt;
   - connect signal that x changed to slot to do something with that info&lt;br /&gt;
   - cmake provides a QObject wrapper, Qt meta object compiler (MOC) to wrap Qt to C++&lt;br /&gt;
   - vtk can call Qt slot, uses the Connect method on vtkEventQtSlotConnect class&lt;br /&gt;
   - Qt can connect signal and slot that can interact with vtk objects&lt;br /&gt;
   - Qt global window keeps track of all signals (Qt connect) via the Qt event loop&lt;br /&gt;
Qt Designer and Qt creator:&lt;br /&gt;
   - writes xml file to disk, translated to ui_MyWidget.h (which is not a qObject)&lt;br /&gt;
   - the meta object compiler can compile ui files to .h files&lt;br /&gt;
   - can drop in custom qt widgets (Promoted Class) or Qt designer plugin (see Maverick qt qwidgets that have been contributed as open souce at http://www.vtk.org/wiki/Maverick)&lt;br /&gt;
   - can overload paint event to change the icons at pixel level (changed the range slider trough appearance in the example)&lt;br /&gt;
   - Qt can apply a style and keep it the same across all platforms; debate if we wan to do this&lt;br /&gt;
   - Canvas to draw UI with lines, rectangles, textures&lt;br /&gt;
- can block a signal to do the equivalent of swallowing a vtk event&lt;br /&gt;
- Qt can be compiled multithreaded&lt;br /&gt;
- remove gui events and move to Qt&lt;br /&gt;
- kwsys versus Qt sys&lt;br /&gt;
- on the Mac: vtk carbon render window, can't coexist with TK, cocoa looks bad&lt;br /&gt;
- there will be a tutorial on Qt development at the winter project week&lt;br /&gt;
- looking at Slicer&lt;br /&gt;
   - recurring bug, the checkerboard filter node sel cuts off to the last letter of the node name&lt;br /&gt;
- get signal if user moves slider, not if set the value of a slider programatically&lt;br /&gt;
   - if want other qt widgets to respond, need to observe what triggered the set value call (verify this) aka change to a mrml node&lt;br /&gt;
- if we could just listen for signals (wrap vtk with Qt), easier&lt;br /&gt;
- memory management: make sure to use vtk smart pointers, don't need to delete Qt objects&lt;br /&gt;
- start at 8am tomorrow&lt;br /&gt;
&lt;br /&gt;
Thur Sept 17/09&lt;br /&gt;
Kitware meeting about Qt&lt;br /&gt;
- JC did a proof of concept architecture for using Qt&lt;br /&gt;
- separate out nodes (each qt module will have a vtkmrmlnode as a superclass pointer, safe down cast to it's specific one): widget passes editing to module which edits the node&lt;br /&gt;
- tcl modules&lt;br /&gt;
   - translate them to python?&lt;br /&gt;
   - what about scripted modules?&lt;br /&gt;
   - python goes through tcl&lt;br /&gt;
   - tcl access to vtk obj -&amp;gt; vtk wrap tcl&lt;br /&gt;
   - tcl access to qt -&amp;gt; python&lt;br /&gt;
- current work&lt;br /&gt;
   - Seb making new cameras and windows, merging code, lowest time estimate to be done, 10 days&lt;br /&gt;
       - try to wait for him to get the mrml level stuff done before chaning the3d window UI on him&lt;br /&gt;
   - Wendy's customisable layout is paused while the Qt storm rages&lt;br /&gt;
- conversion of specific things to Qt&lt;br /&gt;
   - toolbar:&lt;br /&gt;
       - layout options that we want first? conventional, four up, red only, compare view... pretty much all of them&lt;br /&gt;
       - most of the buttons just jump to modules&lt;br /&gt;
   - Qt colours&lt;br /&gt;
       - can add custom colours, how about sets of them?&lt;br /&gt;
       - drop down box to selet colour from a list&lt;br /&gt;
   - log: KWQtLogDialog&lt;br /&gt;
   - multi column list: QtPropertyBrowser, can view as List, Tree, Table&lt;br /&gt;
       - can have table and tree combined in one view&lt;br /&gt;
   - Qt has undo/redo&lt;br /&gt;
   - icons -&amp;gt; resouce editor in Qt creator&lt;br /&gt;
   - naming conventions&lt;br /&gt;
       - qSlicer&lt;br /&gt;
       - onEventChanged&lt;br /&gt;
- Qt training?&lt;br /&gt;
   - trolltech docs for getting started&lt;br /&gt;
- Qt module skeleton generator will be important, write out an xml file and cxx&lt;br /&gt;
- for January, ahve something for developers to work on, by summer, transition to Qt&lt;br /&gt;
- examples checked in to Base/GUI2?&lt;br /&gt;
- Jim Miller to rewrite CLI generator?&lt;br /&gt;
   - Steve thinks anyone could do it&lt;br /&gt;
- benefits list on wiki somewhere so can add to it&lt;br /&gt;
- undo in slicer, add a string with the node on the call to the mrml scene&lt;br /&gt;
- Qt web plug in demo&lt;br /&gt;
   - any qt slot is a java script method&lt;br /&gt;
   - see Base/GUI/Qt/vtkview.cxx&lt;br /&gt;
   - so can write html with calls to vtk and mrml (via KW applicatin and Script call)&lt;br /&gt;
   - write live tutorials - overlay on buttons to show which to press&lt;br /&gt;
   - allow writing CLI in javascript but don't encourage/support it&lt;br /&gt;
   - simple ui for work in developing countries&lt;br /&gt;
- Steve to go to Chapel Hill for more work with JC&lt;br /&gt;
- action items for Slicer core devs: do Qt tutorial, get slicer building with Qt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nicole</name></author>
		
	</entry>
</feed>