[Insight-users] question regarding QT - ITK connection
Luis Ibanez
luis.ibanez at kitware.com
Tue Jul 14 12:41:07 EDT 2009
Hi Sergio,
As the error message states:
The QtSlotAdaptor classs has no definition available for
a SetCallbackFunction() where the function takes "unsigned int"
as an argument.
The current options are:
void, int, and double
See lines 50-57 in itkQtAdaptor.h:
class QtSlotAdaptor : public QtTranslator
{
typedef void (T::*TMemberFunctionVoidPointer)();
typedef void (T::*TMemberFunctionIntPointer)(int);
typedef void (T::*TMemberFunctionDoublePointer)(double);
You need to insert
typedef void (T::*TMemberFunctionUnsignedIntPointer)(unsigned int);
in line 55,
and then insert
/** Specify the callback function. */
void SetCallbackFunction(T* object,
TMemberFunctionUnsignedIntPointer memberFunction)
{
m_This = object;
m_MemberFunctionUnsignedInt = memberFunction;
}
in line 72,
and then insert
TMemberFunctionUnsignedIntPointer m_MemberFunctionUnsignedInt;
in lines 121.
NOTE, all the lines number are given *before* insertions.
Regards,
Luis
------------------------------------------------------------------------------
On Mon, Jul 13, 2009 at 8:47 PM, Sergio Aguirre <sergio.aguirre at gmail.com>wrote:
> Hello everyone.
>
> I have been slowly getting the hang of QT and ITK, After a few days I
> successfully was able to compile and run the QTITK example located at
> http://public.kitware.com/cgi-bin/viewcvs.cgi/QtITK/?root=InsightApplications
>
> The small app loads and image and shows colors depending of the progress it
> takes when going through a filter. Also it displays a progress bar. I am
> using 'curvatureflowimagefilter' to test the connections.
>
> I now would like to use a slider to set the SetNumberofIterations int
> variable of the filter from the GUI. Unfortunately I get the message below.
>
> I believe I am close as I was able to start the filter using the QTSlider -
> sliderMoved function to trigger the file reading and filtering by calling
> the Update function.
>
> Any suggestions would be handy. Full code is attached and code snippet is
> below.
>
> Thank you
>
> Sergio
>
>
> QWidget qb;
> qb.resize(620,200);
>
> const int buttonHeight = 30;
> const int buttonWidth = 100;
> const int buttonSpace = 100;
>
> int horizontalPosition = 60;
>
> QPushButton bb( "Start", &qb );
> bb.setGeometry( horizontalPosition, 20, buttonWidth, buttonHeight );
>
> horizontalPosition += buttonWidth + buttonSpace;
>
> QtLightIndicator cc( &qb, "State" );
> cc.setGeometry( horizontalPosition, 20, buttonWidth, buttonHeight );
> cc.Modified();
>
> horizontalPosition += buttonWidth + buttonSpace;
>
> QPushButton qt( "Quit", &qb );
> qt.setGeometry( horizontalPosition, 20, buttonWidth, buttonHeight );
>
> QtProgressBar qs( &qb, "Progress");
> qs.setGeometry( 10, 60, 600, 30 );
>
> QSlider sl(Qt::Horizontal, &qb);
> sl.setRange(1, 100);
> sl.setValue(10);
> sl.setGeometry(100, 110, 400, 60);
>
> // Connect the progress bar to the ITK processObject
> qs.Observe( filter.GetPointer() );
> qs.Observe( reader.GetPointer() );
>
>
> typedef QtSlotAdaptor<FilterType> SlotAdaptorType;
> SlotAdaptorType slotAdaptor1;
> // Connect the adaptor to a method of the ITK filter
> slotAdaptor1.SetCallbackFunction( filter, & FilterType::Update );
> // Connect the adaptor's Slot to the Qt Widget Signal
> QObject::connect( &bb, SIGNAL(clicked()), &slotAdaptor1, SLOT(Slot()) );
>
> typedef QtSlotAdaptor<FilterType> SlotAdaptorType;
> SlotAdaptorType slotAdaptor2;
> // Connect the adaptor to a method of the ITK filter
> slotAdaptor2.SetCallbackFunction( filter, &
> FilterType::SetNumberOfIterations );
> // Connect the adaptor's Slot to the Qt Widget Signal
> QObject::connect( &sl, SIGNAL(sliderMoved(int)), &slotAdaptor2,
> SLOT(Slot()) );
>
>
> ********************* COMPILE OUTPUT
> *********************************************
>
> linux-vk5n:/home/echopixel/Desktop/engine/code/epx01 # make
> [ 25%] Building CXX object CMakeFiles/epx01.dir/epx.cxx.o
> /home/echopixel/Desktop/engine/code/epx01/src/epx.cxx: In function ‘int
> main(int, char**)’:
> /home/echopixel/Desktop/engine/code/epx01/src/epx.cxx:81: warning:
> deprecated conversion from string constant to ‘char*’
> /home/echopixel/Desktop/engine/code/epx01/src/epx.cxx:90: warning:
> deprecated conversion from string constant to ‘char*’
> /home/echopixel/Desktop/engine/code/epx01/src/epx.cxx:113: error: no
> matching function forcall to
> ‘QtSlotAdaptor<itk::CurvatureFlowImageFilter<itk::Image<float, 2u>,
> itk::Image<float, 2u> >
> >::SetCallbackFunction(itk::SmartPointer<itk::CurvatureFlowImageFilter<itk::Image<float,
> 2u>, itk::Image<float, 2u> > >&, void
> (itk::FiniteDifferenceImageFilter<itk::Image<float, 2u>, itk::Image<float,
> 2u> >::*)(unsigned int))’
> /home/echopixel/Desktop/engine/code/epx01/src/itkQtAdaptor.h:67: note:
> candidates are: void QtSlotAdaptor<T>::SetCallbackFunction(T*, void
> (T::*)()) [with T = itk::CurvatureFlowImageFilter<itk::Image<float, 2u>,
> itk::Image<float, 2u> >]
> /home/echopixel/Desktop/engine/code/epx01/src/itkQtAdaptor.h:76:
> note: void QtSlotAdaptor<T>::SetCallbackFunction(T*, void
> (T::*)(int)) [with T = itk::CurvatureFlowImageFilter<itk::Image<float, 2u>,
> itk::Image<float, 2u> >]
> /home/echopixel/Desktop/engine/code/epx01/src/itkQtAdaptor.h:85:
> note: void QtSlotAdaptor<T>::SetCallbackFunction(T*, void
> (T::*)(double)) [with T = itk::CurvatureFlowImageFilter<itk::Image<float,
> 2u>, itk::Image<float, 2u> >]
> make[2]: *** [CMakeFiles/epx01.dir/epx.cxx.o] Error 1
> make[1]: *** [CMakeFiles/epx01.dir/all] Error 2
> make: *** [all] Error 2
>
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090714/dfb73deb/attachment.htm>
More information about the Insight-users
mailing list