| The Qt Palmtop Environment, for Qt/Embedded |
This package should also work fine with Qt/X11 and Qt/Windows, but it is targetted at small handheld devices such as the Compaq iPAQ, and includes some Qt/Embedded specifics such as additional input methods for virtual keyboards and handwriting recognition.
This page describes installation of QPE and development of new QPE application. There is some user-level documentation for the environment here, but you'll normally read that on your handheld device when you've got this working!
Battery meter added, sensible wordgame defaults, fixed flipping in solitaire, fixed time setting, fixed keyboard/pickboard slowness.
Much improved build system.
Spreadsheet, Terminal, and Wordgame added.
Datebook I/O added.
Many bug fixes.
Installation
There is a pre-built binary package of the QPE built for Linux/x86, at:
ftp://ftp.trolltech.com/qt/embedded/palmtop/qpe-1.1.0-bin-x86.tar.gz
To build the package yourself, you have a number of options, each described in detail below.
This build method gives the smallest and fastest result, and reflects a type of build that an embedded device might use when the application suite is more-or-less fixed.
cp ./qt/qconfig*.h $QTDIR/src/tools
cd $QTDIR
make clean
./configure -static -qconfig qpe-single
make
This creates $QTDIR/lib/libqte.a.
cd back-here
./configure -static
make clean
make single
This creates $QTDIR/lib/libqpe.a and single/qpe.
strip -R .note -R .comment single/qpe
This build method gives the most extensible result, and reflects a kind of build that an embedded device might use when the application suite is extended by the end-user.
cp ./qt/qconfig-qpe.h $QTDIR/src/tools/qconfig-local.h
cd $QTDIR
make clean
./configure -qconfig qpe
make
This creates $QTDIR/lib/libqte.so*. You can of course use the default "Everything" Qt configuration, which isn't in the spirit of making small applications, but is useful if you want to have the entire Qt API available.
cd back-here
./configure
make clean
make
This creates $QTDIR/lib/libqpe.so* and bin/*, including a bin/qpe that launchers applications as separate processes (rather than as built-ins which the single-application build does).
strip -R .note -R .comment bin/* $QTDIR/libqte.so* $QTDIR/libqpe.so*
Note that the memory consumption with this type of build is currently excessive
due to the details of ELF.
Build for iPAQ
First go to http://handhelds.org, and install Linux on your iPAQ.
There is a pre-built binary package containing everything you need to put QPE on the Linux iPAQ, at:
ftp://ftp.trolltech.com/qt/embedded/palmtop/qpe-1.1.0-bin-ipaq.tar.gz
To build QPE from the sources:
| ./bin | The applications |
| ./apps | The menus |
| ./pics | The icons and images |
| ./docs | Some documentation of QPE |
| ./etc | Pen-input and dictionary files |
fontdir
helvetica_*.qpf
smoothtimes_{170,100}_50*.qpf
smallsmooth_*.qpf
micro_*.qpf
fixed_*.qpf
A build for the Cassiopeia is here:
ftp://ftp.trolltech.com/qt/embedded/palmtop/qpe-1.1.0-bin-cassiopeia.tar.gz
Developing an application to add to your QPE is just like developing any other application with the Qt API. You have all the same classes and functionality.
As with any application development with Qt/Embedded, the Qt Virtual Framebuffer tool in $QTDIR/src/tools/qvfb is a very useful development aide, since you can control the display size and run with the exact fonts.
As with any development with Qt, the Qt Designer tool in $QTDIR/tools/designer helps you organize functionality visually so you can more easily create a small yet logical and functional GUI.
QPE is less file-oriented than a typical Unix workstation: the user probably doesn't want to worry about file and directories, just the names of the document they have written that are appropriate for the application they are running.
To support this more document-centric model, the QPE library classes provide a basic document selector and file manager. See the FileSelector and FileManager classes defined in library/fileselector.h and library/filemanager.h. These mechanism are very simplistic currently, and they'll develop as the system improves.
TEMPLATE = app
CONFIG = qt warn_on release
DESTDIR = ../bin
HEADERS = foo.h \
fooview.h
SOURCES = foo.cpp \
fooview.cpp \
main.cpp
INCLUDEPATH += ../library
DEPENDPATH += ../library
LIBS += -lqpe
INTERFACES = fooeditor.ui
TARGET = foo
cd qpe/foo
export TMAKEPATH=~/tmake/lib/qws/linux-generic-g++
tmake -o Makefile foo.pro
In place of generic, use x86, ipaq, or cassiopeia.
cd qpe/foo
make
[Desktop Entry]
Name=Foo Viewer
Icon=foo_icon
Exec=foo
Additional fields are ignored, and if they are used in the future,
it will be according to the standard interpretations.
tar cfz foo.tar.gz qpe/pics/foo_icon.png \
qpe/apps/Applications/foo.desktop qpe/foo
and put the package on a web site for others to share!
The forum for general Qt discussion is the Qt-Interest mailing list.
The forum for topics specific to Qt/Embedded or to the QPE is the Qt-Embedded-Interest mailing list. Subcribe to that list by sending the word subscribe to qt-embedded-interest-request@trolltech.com. Unsunbscribe by sending unsubscribe.