NAMING GUIDELINES

To avoid chaos and naming conflicts Trolltech recommends that you follow these naming guidelines when you create new classes based on Qt that you wish to release to the free software community.
When you are ready to release your new fantastic class(es)/application(s) for the first time, please let us know about a web page we can reference to. We will then add your class(es)/application(s) to our list of Free Programs and Libraries that use Qt.
Global Names in Your Code
All global names in your header file, i.e. class names, global enums, global functions, preprocessing symbols, etc. should start with a 'q' (uppercase or lowercase), followed by a 1, 2 or 3 character lowercase prefix, followed by a descriptive name. We recommend the following scheme, where xxx is your prefix:
Class Names, Global Types (enums included), global enum identifiers:
QxxxDescriptiveName 
Global Functions:
qxxxDescriptiveName 
Preprocessor Symbols:
QxxxDESCRIPTIVENAME 
File Names
classname.h
for header files
classname.cpp
for code files
We recommend using lowercase file names for Windows compatibility. In addition, you should put your code in a directory called
qxxx
, where xxx is your prefix. You should then use
#include<qxxx/ClassName.h> 
to include header files. (Note that for historical reasons, these guidelines are not followed by Qt. We had to conform to the 8.3 rule when we supported Windows 3.x. Windows 95/98 and NT do not have this limitation.)
Name Prefixes
As a service to the free software community Trolltech maintains an archive of reserved name prefixes. If you register your prefix with us you will at least have a very good answer to give when somebody complains about a name crash.
Trolltech will not act as police if someone should break these rules.
Reserved Name Prefixes
If you want to reserve a prefix, please send mail to qt-prefix@trolltech.com, first come, first served.
Identifiers of the form:
QDescriptiveName, qDescriptiveName
	    
and
QDESCRIPTIVENAME 
are reserved by Trolltech.
To avoid a race to grab all the single letter prefixes, you'll have to have a working class :-) released at an ftp site somewhere (e.g. ftp.trolltech.com) to be allocated a single letter prefix. 2 and 3 letter prefixes can be allocated by anyone.
The following prefixes have been reserved by developers of Qt based classes.
Single Letter Prefixes
a, as in QaClassName
Reserved by Alexander Kroeller <ali@fb3-s7.math.TU-Berlin.DE>
b, as in QbClassName
Reserved by Daniel Brahneborg <basic@well.com>
d, as in QdClassName
Reserved by Jon DeNardis <docboy@tznet.com>
f, as in QfClassName
Reserved by Gabor Fleischer <flocsysoft@usa.net>
g, as in QgClassName
Reserved by Geri House <ge_ha@yahoo.com>
k, as in QkClassName
Reserved by Pieter van Beek <vanbeek@kobasoft.nl>
m, as in QmClassName
Reserved by Marius Sundbakken <marius@fix.no>
s, as in QsClassName
Reserved by Sven Mueller <sven-qt@incase.de>
t, as in QtClassName
Reserved by Trolltech <info@trolltech.com>
w, as in QwClassName
Reserved by Warwick Allison <warwick@trolltech.com>
x, as in QxClassName
Reserved by Greger Haga <gregerhaga@yahoo.com>

Double Letter Prefixes
ak, as in QakClassName
Reserved by Andreas Krebs <mail@krebs-net.de>
aw, as in QawClassName
Reserved by Arjen Wiersma <arjen@wiersma.org>
ap, as in QapClassName
Reserved by Alexey Pushkin <A.Pushkin@mitsunari.matfys.lth.se>
ch, as in QchClassName
Reserved by Stephen Davies <Chalky@tpgi.com.au>
cl, as in QclClassName
Reserved by CAD&LAN Computersysteme GmbH <rgerlach@cid-bz.de>
cm, as in QcmClassName
Reserved by Christian Mönch <Moench@em.uni-frankfurt.de>
cs, as in QcsClassName
Reserved by Lionel Schaffhauser <lionel.schaffhauser@free.fr>
cw, as in QcwClassName
Reserved by Christian Wolf <chris@medis.de>
db, as in QdbClassName
Reserved by Wolfgang Glas <Wolfgang.Glas@ev-i.at>
ex, as in QexClassName
Reserved by Hussein SHAFIE <hussein@pixware.fr>
fk, as in QfkClassName
Reserved by Frank Kehren <f.kehren@fz-juelich.de>
gn, as in QgnClassName
Reserved by Lionel Schaffhauser <lionel.schaffhauser@free.fr>
gs, as in QgsClassName
Reserved by Gary Sherman <gsherman@cgi.net>
hd, as in QhdClassName
Reserved by Dirk Thamer <dirk.thamer@hd-systeme.de>
hv, as in QhvClassName
Reserved by Holger Vogelsang <holger.vogelsang@fh-karlsruhe.de>
if, as in QifClassName
Reserved by Mike Ivanov <mike@if-site.com>
ib, as in QibClassName
Reserved by Irakli Betchvaia <betschwaia@bigfoot.com>
ix, as in QixClassName
Reserved by Steve Schau <steve.schaub@identix.com>
jb, as in QjbClassName
Reserved by Jon Brumfitt <jbrumfit@estsa2.estec.esa.nl>
jf, as in QjfClassName
Reserved by Jürgen Feichtinger <juerchen@web.de>
jg, as in QjgClassName
Reserved by Joe Gilkey <jgilkey@hotmail.com>
jo, as in QjoClassName
Reserved by Johannes Overmann <overmann@i6.informatik.rwth-aachen.de>
km, as in QkmClassName
Reserved by Karsten Muehlmann <muehlman@mp-sun1.informatik.uni-mannheim.de>
ks, as in QksClassName
Reserved by Mike Vivash <deadcode42@yahoo.ca>
lg, as in QlgClassName
Reserved by Chris Piker <cwp@space.physics.uiowa.edu>
mc, as in QmcClassName
Reserved by Michael van der Westhuizen <michael@mudpuppies.co.za>
mp, as in QmpClassName
Reserved by Martin Persson <marpe581@student.liu.se>
mw, as in QmwClassName
Reserved by Michael Wiedmann <mw@miwie.in-berlin.de>
oc, as in QocClassName
Reserved by Michele Ricciardi <michelericciardi@tiscalinet.it>
qc, as in QqcClassName
Reserved by Karl Wallner <karl-qtdev@weps.de>
rt, as in QrtClassName
Reserved by RT-SET (contact person: Ken Fuhrman) <kenf@rtset.com>
sc, as in QscClassName
Reserved by Sandro Sigala <ssigala@globalnet.it>
sk, as in QskClassName
Reserved by Stephan Kanthak <kanthak@i6.informatik.rwth-aachen.de>
ts, as in QtsClassName
Reserved by Thomas Schneider <thomas.b.schneider@web.de>
ut, as in QutClassName
Reserved by Udo Tremel <udo.tremel@m.eads.net>
vs, as in QvsClassName
Reserved by Vladi Shabanski <cade@biscom.net>
zn, as in QznClassName
Reserved by Zdravko Nezic <Zdravko.Nezic@ieee.org>

Triple Letter Prefixes
akk, as in QakkClassName
Reserved by Ari Kautonen <akk@sci.fi>
bal, as in QbalClassName
Reserved by Paul Kramer <qbal@pacbell.net>
cis, as in QcisClassName
Reserved by David Alex Lamb <dalamb@qucis.queensu.ca>
dtc, as in QdtcClassName
Reserved by Eric Liao <eric@mail.dialogue.com.tw>
dti, as in QdtiClassName
Reserved by Davis Tool Inc. <JAMESH@davistl.com>
eiv, as in QeivClassName
Reserved by Patrick BURNAND <pburnand@yahoo.com>
hle, as in QhleClassName
Reserved by Ricardo Vaz Mannrich <mannrich@hotmail.com>
isr, as in QisrClassName
Reserved by Joseph Davis <Joseph.Davis@isarinc.com>
ics, as in QicsClassName
Reserved by Mark Hatch < mhatch at ics dot com>
jfm, as in QjfmClassName
Reserved by John F. Meinel Jr. <jfmeinel@ct.radiology.uiowa.edu>
kts, as in QktsClassName
Reserved by Keith Brown <ksbrown@ix.netcom.com>
log, as in QlogClassName
Reserved by Kevin Fisk <KFisk@linkpoint.com>
mag, as in QmagClassName
Reserved by Magic Touch Ltd <info@magic.fi>
mat, as in QmatClassName
Reserved by Mark Thomas <mark@m-a-t.com>
maj, as in QmajClassName
Reserved by Mark Jones <markalanj@yahoo.no>
mcm, as in QmcmClassName
Reserved by Steven Clark <mcmustard@mcmustard.com>
mms, as in QmmsClassName
Reserved by Max Strumia <cromalloy@yahoo.com>
mud, as in QmudClassName
Reserved by Fontani Marco <emc2@luda.it>
mvd, as in QmvdClassName
Reserved by Mark van Dijk <mark.van.dijk@nz.dialogic.com>
nab, as in QnabClassName
Reserved by Nick Bastin <nbastin@rbbsystems.com>
ool, as in QoolClassName
Reserved by Alexey V. Samsonoff <asamsonoff@mail.ru>
pag, as in QpagClassName
Reserved by Paul Gearon <pag@tams.com.au>
red, as in QredClassName
Reserved by Alex Makarenko <a.makarenko@acfr.usyd.edu.au>
rjp, as in QrjpClassName
Reserved by Richard J. Pontefrac <richard.pontefract@auth-sol.co.uk>
ryk, as in QrykClassName
Reserved by Krystian Bate <blackstaff@i-star.com>
sks, as in QsksClassName
Reserved by Sean Kendall Schneyer <Sean.Schneyer@hks.se>
smh, as in QsmhClassName
Reserved by Sascha M. Hagner <ravens@dssg.de>
taj, as in QtajClassName
Reserved by Sirtaj Singh Kang <ssk@physics.unimelb.EDU.AU>
tam, as in QtamClassName
Reserved by Paul Gearon <pag@tams.com.au>
tec, as in QtecClassName
Reserved by HEITEC Datentechnik GmbH, Stefan Hundhammer <Stefan.Hundhammer@datech.heitec.de>
ube, as in QubeClassName
Reserved by Reinhard Lackner <mares25@uboot.com>
uik, as in QuikClassName
Reserved by Mike Perik <mikep@crt.com>
uiz, as in QuizClassName
Reserved by Richard D. Jackson <rjackson@bga.com>
uux, as in QuuxClassName
Reserved by Paul Foley <mycroft@actrix.gen.nz>
wav, as in QwavClassName
Reserved by Peter Eschle <peschler@t-online.de>

Header File Example
You have reserved the prefix "ute" and want to release a class called Mountain, You put the code in the directory "qute", the header file
qutemountain.h
looks like this:
/*******************************************************
**
** Definition of QuteMountain
**
** Copyright (C) 1996 Harald Acker.
**
** QuteMountain is free software; you can redistribute
** it and/or modify it under the terms of the GNU
** Library General Public License as published by the
** Free Software Foundation; either version 2, or (at
** your option) any later version.
**
********************************************************/

#ifndef QuteMOUNTAIN_H
#define QuteMOUNTAIN_H

#include <qframe.h>

enum QuteWeather { QuteSunshine, QuteOvercast,
            QuteCloudy, QuteRain,
            QuteThunderstorm, QuteSnow };

QuteWeather qutePollWeatherStation();

class QuteMountain : public QFrame
{
    Q_OBJECT
public:
    QuteMountain( QWidget *parent=0, const char *name=0 );
    QuteMountain( QuteWeather w,
    QWidget *parent=0, const char *name=0 );
   ~QuteMountain();

    bool    hasNiceWeather() const;

public slots:
    void    climbIt();

signals:
    void    weatherChanged();

protected:
    void    resizeEvent( QResizeEvent * );
    void    drawContents( QPainter * );

private:
    QuteWeather weather;

private:  // Disabled copy constructor and operator=
    QuteMountain( const QuteMountain & ) {}
    QuteMountain &operator=( const QuteMountain & )
 { return *this; }
};

#endif // QuteMOUNTAIN_H