[Qgis-developer] Patch to Remove Qt3 Dependencies
tim at linfiniti.com
Sat Apr 26 08:00:17 EDT 2008
Great stuff - Im going to test here on mac and later on ubuntu gutsy &
heron. Ill give you feedback on monday if I ran into any issues. I'm
*really* looking forward to showing qt3compatibility stuff out the
2008/4/24 Tom Elwertowski <telwertowski at comcast.net>:
> Hello all,
> Here is a patch which removes use of Qt3 routines for all of QGIS except
> the GRASS plugin:
> Please test it and send comments. After resolving any issues, I would like
> to submit it to svn trunk.
> The GRASS plugin, which probably contains about half of the Qt3
> dependencies, will be done later. The patch was done to build with the
> Qt/Mac/64bit alpha1 release; Qt3 features are not being ported to Mac/64bit.
> Three categories of changes have be made:
> 1. Remove use of qt3support library (Q3 classes).
> 2. Remove use of qt3 compatibility routines in qt4 classes.
> 3. Remove automatic cast of QString to char*.
> Classes and places with non-trivial changes are:
> Q3Table to QtableWidget (qgsattributeactiondialog, qgsattributetable,
> Q3ListView to QTreeWidget (qgsbookmarks, qgsrasterlayerproperties,
> qgsgeomtypedialog, qgsserversourceselect)
> Q3Dict to QHash (qgsprojectproperty)
> Q3Process to QProcess (qgsgpsplugin)
> The most complex change involved handling selections in the item view
> classes (tables, trees and lists) so this should be tested the most.
> In spite of its name, QTreeWidget also handles multicolumn lists which are
> not trees; just set rootIsDecoated to false. Qt4 QListWidget is for lists
> with one column and no header.
> Qt4 has two classes for each item view: QTable/Tree/ListWidget and
> QTable/Tree/ListView. The Widget classes contain a backing store and the
> View classes don't. The Widget classes correspond more closely to the Q3
> qgsattributetable, which can take a while to load large tables, should
> probably be rewritten as a QTableView with an QAbstractTableModel subclass
> to pull individual cells directly for the provider as needed. It has been
> ported as a QTableWidget to keep the port straightforward and not introduce
> additional refactoring into this edit.
> Removing automatic casts of QString to char* also uncovered some odd code.
> Defining QT_NO_CAST_TO_ASCII will produce a compile error whenever an
> implicit QString cast occurs. Based on these two examples, this macro serves
> as 'lint' for QStrings.
> QString str; delete str; // compiles due to cast of str.
> tr("abc" + def + tr("ghi")) // ought to be tr("abc") + def + tr("ghi")
> In most cases, I have used toUtf8() to eliminate implicit casts. If a file
> already used toAscii(), toLatin1() or toLocal8Bit(), I also used it to keep
> the file consistent. Implicit casts have also been removed from the GRASS
> plugin so that QT_NO_CAST_TO_ASCII can be defined for all future builds.
> The patch has been tested using Qt4.2, 4.3 and 4.4RC1 as well as
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
QGIS Project Steering Committee Member - Release Manager
Visit http://qgis.org for a great open source GIS
openModeller Desktop Developer
Visit http://openModeller.sf.net for a great open source ecological
niche modelling tool
Home Page: http://tim.linfiniti.com
Irc: timlinux on #qgis at freenode.net
More information about the Qgis-developer