Best way to use a custom widget with Qt designer within Avogadro

Hi,

I’m trying to familiarise myself with different bits of Avogadro and have been playing around with the Cartesian Editor extension.

I’d like to have a particular method called when the user releases the mouse button, so using Designer I’ve promoted the QTextEdit widget in the editor to my own CartesianTextEdit widget (where I’ve defined my own mouseReleaseEvent method), and specified the location of the header (cartesiantextedit.h).

I’ve also created a file (cartesiantextedit.cpp) which is sat in the libavogadro/src/extensions directory.

I tried adding cartesiantextedit.cpp to the CMakeLists.txt file in that directory ala:

avogadro_plugin_nogl(cartesianextension
cartesianextension.cpp
cartesiantextedit.cpp
cartesianeditor.ui
edit.qrc)

and then ran make. That failed with:

[ 36%] Building CXX object libavogadro/src/extensions/CMakeFiles/cartesianextension.dir/cartesianextension.cpp.o
cd /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions && /usr/bin/c++ -D_BSD_SOURCE -DHAVE_GCC_VISIBILITY -DENABLE_PYTHON -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_DLL -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG -Dcartesianextension_EXPORTS -fvisibility=hidden -fvisibility-inlines-hidden -fpermissive -O2 -g -Wnon-virtual-dtor -Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra -Wpointer-arith -Wformat-security -fno-check-new -fno-common -pedantic -fPIC -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/include -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtOpenGL -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtGui -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtCore -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src -I/home/jmht/Documents/AVOGADRO/eigen -I/home/jmht/Documents/AVOGADRO/openbabel/include -I/usr/include/python2.6 -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions -fno-rtti -o CMakeFiles/cartesianextension.dir/cartesianextension.cpp.o -c /home/jmht/Documents/AVOGADRO/avogadro/libavogadro/src/extensions/cartesianextension.cpp
In file included from /home/jmht/Documents/AVOGADRO/avogadro/libavogadro/src/extensions/cartesianextension.h:31,
from /home/jmht/Documents/AVOGADRO/avogadro/libavogadro/src/extensions/cartesianextension.cpp:23:
/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/ui_cartesianeditor.h:25:31: error: cartesiantextedit.h: No such file or directory
In file included from /home/jmht/Documents/AVOGADRO/avogadro/libavogadro/src/extensions/cartesianextension.h:31,
from /home/jmht/Documents/AVOGADRO/avogadro/libavogadro/src/extensions/cartesianextension.cpp:23:
/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/ui_cartesianeditor.h:42: warning: ISO C++ forbids declaration of ‘CartesianTextEdit’ with no type

If manually run the make including the path to where cartesiantextedit.h was located, that file compiles, but the subsequent make then dies with:

[ 36%] Building CXX object libavogadro/src/extensions/CMakeFiles/cartesianextension.dir/moc_cartesianextension.cxx.o
cd /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions && /usr/bin/c++ -D_BSD_SOURCE -DHAVE_GCC_VISIBILITY -DENABLE_PYTHON -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_DLL -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG -Dcartesianextension_EXPORTS -fvisibility=hidden -fvisibility-inlines-hidden -fpermissive -O2 -g -Wnon-virtual-dtor -Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra -Wpointer-arith -Wformat-security -fno-check-new -fno-common -pedantic -fPIC -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/include -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtOpenGL -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtGui -I/home/jmht/Documents/AVOGADRO/qt-everywhere-opensource-src-4.6.3/install/include/QtCore -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src -I/home/jmht/Documents/AVOGADRO/eigen -I/home/jmht/Documents/AVOGADRO/openbabel/include -I/usr/include/python2.6 -I/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions -fno-rtti -o CMakeFiles/cartesianextension.dir/moc_cartesianextension.cxx.o -c /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/moc_cartesianextension.cxx
In file included from /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/…/…/…/…/libavogadro/src/extensions/cartesianextension.h:31,
from /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/moc_cartesianextension.cxx:10:
/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/ui_cartesianeditor.h:25:31: error: cartesiantextedit.h: No such file or directory
In file included from /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/…/…/…/…/libavogadro/src/extensions/cartesianextension.h:31,
from /home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/moc_cartesianextension.cxx:10:
/home/jmht/Documents/AVOGADRO/avogadro/build/libavogadro/src/extensions/ui_cartesianeditor.h:42: warning: ISO C++ forbids declaration of ‘CartesianTextEdit’ with no type

So the Qt moc stuff obviously isn’t being handled correctly.

I have to confess that I don’t really know what I’m doing here, so any pointers would be appreciated.

Thanks,

Jens


Scanned by iCritical.

I guess this is because cartesianextension is already there :slight_smile:
Look through source tree for files cartesianextension.cpp, cartesianextension.h, and cartesianeditor.ui

Regards,
Konstantin