Kt (pronounced Katie) is an implementation of Trolltech's Qt library
API. Kt is completely independent and separate from Trolltech's Qt
library, and the two share no code. The Kt project was started by
me (Tony O'Bryan) sometime in 2002 to provide a Qt compatible, cross
platform, C++ library that could be used for commercial applications
without requiring extravagant licensing fees (or any licensing fees for
that matter) and to provide a means to learn XLib programming (short
story: it's no picnic). Its development stopped shortly after it
began due to more important obligations (paid work is funny like
that). The project resumed on June 26, 2003, and its SourceForge
account was started on 7/7/2003.
As is the case with most ambitious projects, when I started getting
into the meat of Kt, I realized that I could not advance this very
quickly on my own. I also realized with the whole SCO fiasco that
publicly documenting every step of Kt's development would make life much
easier should Trolltech ever turn stupid like SCO, however unlikely that
seems now. Kt is being developed through SourceForge for these two
primary reasons.
Kt is in early development, so there should not be a horrendous
learning curve if you want to join the project.
As I develop more of Kt, I come to realize that parts of Qt are really
badly designed. I have decided that Kt will diverge from Qt in
more areas than I had initially planned. Here is a rundown of
where I will not mimic Qt:
- Signals and slots. I have adopted the general approach
found in Java for event handling, so there is a provider/listener model
rather than a signal/slot model. This means that I do not have to
introduce nonstandard extension to C++ and I do not have to write a
meta object compiler. Event generators will define an event
interface, and listeners will implement that interface. The end
result is the same as with signals and slots. This system is
already implemented and works very well.
- Layout management. Qt's system of component layout
management is bulky, awkward, and convoluted. It also requires a
great deal of processor time to get right. The layout management
system I am developing will be relatively easy to implement and will be
easy on the processor. Widget layout should be noticably
faster. There is no code in the released files that support this
as of yet.
There will likely be more deviations as time goes on.
Thanks to SourceForge for hosting
this project.
