Qt/Embedded Whitepaper. Trolltech
|
|
|
- Rolf Phillips
- 9 years ago
- Views:
Transcription
1 Qt/Embedded Whitepaper Trolltech Abstract This whitepaper describes the Qt/Embedded C++ toolkit for GUI and application development on embedded devices. It runs on any device supported by Linux and a C++ compiler. Qt/Embedded provides the entire standard Qt API and can compile out unused features to minimize its memory footprint. Qt/Embedded provides its own windowing system which is far more compact than Xlib and the X Window System that it replaces. Qt/Embedded applications can be developed on familiar desktop systems, e.g. Windows and Unix, and with standard tools. It is provided with all the Qt tools including Qt Designer for visual form design, and with tools specifically tailored to the embedded environment. The Sharp Zaurus PDA using Qt/Embedded
2 ii
3 Qt/Embedded Whitepaper Trolltech Contents 1. Introduction System Requirements Architecture Windowing System Fonts Input Devices Input Methods Screen Acceleration Development Environment Qt s Supporting Tools Signals and Slots A Signals and Slots Example Meta Object Compiler Widgets A Hello Example Common Widgets Canvas Custom Widgets Main Windows Menus Toolbars Balloon Help Actions Dialogs Layouts Qt Designer Built-in Dialogs Look and Feel Widget Style Window Decorations Internationalization Unicode
4 9.2. Translating Applications Qt Linguist Non-Graphical Classes Collection Classes Input/Output Networking Database Multi-Threading Qt/Embedded in the Wider World Index
5 1. Introduction Qt/Embedded is a C++ toolkit for GUI and application development for embedded devices. It runs on a variety of processors, usually with Embedded Linux. Qt/Embedded applicationswrite directly to the frame-buffer, eliminating the need for the X Window System. In addition to the class library, Qt/Embedded includes several tools to speed and ease development. Applications can be developed with familiar programming environments on Windows and Unix, using the standard Qt API. Qt/Embedded is a port of the Qt C++ API for embedded devices. It provides the same API and tools as the Qt/X11, Qt/Windows and Qt/Mac versions. Qt/Embedded also includes classes and tools to specifically support embedded development. The Qt C++ toolkit upon which Qt/Embedded is built has been at the heart of commercial applications since Qt is used by enterprises as diverse as AT&T, IBM, NASA, Sharp and Xerox, and by numerous smaller companies and organizations. Qt 3.0 retains the power and ease of use of earlier versions and introduces many new classes. Qt s classes are fully featured to reduce developer workload, and provide consistent interfaces to speed learning. Qt is, and always has been, fully object-oriented. Qt provides a type-safe alternative to old fashioned callbacks, called signals and slots [p. 8], that facilitates true component programming. Qt supplies a wide range of versatile widgets [p. 11] that can easily be subclassed to create custom components, or combined to create custom dialogs [p. 19]. Pre-defined dialogs for common tasks such as message boxes and wizards are also provided. Qt/Embedded has much smaller system requirements [p. 4], i.e. lower storage (Flash) and memory (RAM) footprints, than embedded solutions based on the X Window System. It can run on hardware that runs Linux, has a linearly addressable framebuffer, and supports a C++ compiler. And Qt/Embedded can be recompiled to exclude unused features to reduce its memory footprint even further. The architecture [p. 5] of Qt/Embedded includes its own windowing system [p. 6]. A variety of input devices [p. 7] are supported. Developers write code using their familiar development environments [p. 8]. Qt Designer [p. 22] can be used to visually design user interfaces using Qt s layout [p. 19] system, which automatically adapts to the available screen space. Developers can choose one of the pre-defined look and feel [p. 24] styles or create their own unique styles. Unix users can run and test their applications on a pixel-perfect virtual frame-buffer. Qt/Embedded also provides many non-graphical components [p. 28] for specialized tasks, such as internationalization [p. 25], networking and database interaction. Qt/Embedded is a mature, solid C++ toolkit, widely used all over the world [p. 30]. In addition to Qt/Embedded s many other commercial uses, it is the foundation of the Qtopia application environment for small devices. Qt/Embedded makes application development a pleasure, with its simple build system, visual form design and elegant API. 3
6 2. System Requirements Qt/Embedded saves memory because it does not need an X server or Xlib; instead it writes directly to the frame-buffer. Memory consumption can be fine-tuned by compiling out features that are not used. It is also possible to compile all the applications into a single statically linked executable, to save even more memory. Qt/Embedded is available for all processors supported by Linux that have a C++ compiler, including Intel x86, MIPS, ARM, StrongARM, Motorola and PowerPC. Trolltech is also exploring the possibility of creating a cross platform toolkit for the embedded market. Qt/Embedded implementations for QNX and for WinCE are both being trialed. Trolltech also provides porting services to other operating systems. Qt/Embedded applications write directly to the kernel frame-buffer. Linear frame-buffers with 1, 4, 8, 15, 16, 24 and 32 bit depths and VGA16 are supported. Any graphic card supported by the kernel will work, and Qt/Embedded can be customized to benefit from screen acceleration hardware, as described in Architecture [p. 5]. There is no arbitrary limit on screen size, and many advanced features such as anti-aliased fonts, alpha-blended pixmaps and screen rotation are provided. Qt/Embedded s principal strength is that is doesn t rely on an X server. This leads to significant memory savings compared with other solutions, such as Qt/X11. A single library, the Qt/Embedded library, is all that is necessary to replace the X server, the Xlib library and the widget toolkit of other embedded solutions x 8000 Qt/X11 Qt/Embedded 8170 KB KB 6000 RAM (KB) KB 4250 KB KB 3230 KB KB KB X Server + Phone Client + Mail Client+ Message Center Cumulative RAM consumption Figure 1. Memory comparison between Qt/X11 and Qt/Embedded for Ericsson s screen phone 4
7 The graph illustrates that the X server grabs a lot of RAM on startup, and also requires more memory as each new application is launched. For example, starting the Phone Client requires 2490 KB with Qt/X11, but only 1640 KB with Qt/Embedded. The footprint of the Qt/Embedded library can be reduced by compiling out unused features. For example, the QListView widget can be compiled out by defining the pre-processor symbol QT_NO_LISTVIEW, and support for internationalization is compiled out by defining QT_NO_I18N. Qt/Embedded provides over 200 configurable features, resulting in libraries varying in size between 700 KB and 5000 KB (Intel x86). Most customers use configurations between 1500 KB and 4000 KB. Qt/Embedded also benefits from memory-saving techniques such as implicit sharing (copy on write) and caching. Over 20 classes in Qt, including QBitmap, QMap, QPalette, QPicture, QPixmap and QString, use implicit sharing to avoid unnecessary copying and minimize memory usage. Implicit sharing occurs automatically and makes programming much simpler, avoiding the risks related to hand optimization and pointers. Many Qt components can be compiled into the library or made available as plugins. Custom look and feel components [p. 24], database drivers, font format readers, image format converters, text codecs and widgets can be compiled as plugins, reducing the size of the core library and providing more flexibility. Alternatively, if the applications and components are known in advance, they can be compiled and statically linked with the Qt/Embedded library into a single executable, saving ROM, RAM and CPU. 3. Architecture Qt/Embedded provides the standard Qt API for embedded devices with a lightweight windowing system. Qt/Embedded s object-oriented design makes it straightforward to support additional devices, from peripherals like keyboards and mice to accelerated graphics boards. With Qt/Embedded, developers benefit from exactly the same API that Qt/X11, Qt/Windows and Qt/Mac provide. Application Source Code Qt API Qt/Embedded Qt/X11 Xlib X Window Server Frame-buffer Linux Kernel Figure 2. Qt/Embedded versus Qt/X11 on Embedded Linux Using a single API across a variety of platforms offers many benefits. Companies that produce applications for both embedded devices and desktop computers can train their developers in a single toolkit. This makes it easier to share experience and knowledge, and gives managers more flexibility when allocating developers to projects. Furthermore, applications and 5
8 components developed for a particular platform can be sold for any of the other Qt platforms, expanding the products market for a very low marginal cost Windowing System A Qt/Embedded windowing system consists of one or more processes, one of which acts as a server. The server allocates regions to be displayed by clients, and generates mouse and keyboard events. The server process can also provide input methods and a user interface to launch client applications. The server process behaves like a client but has some additional privileges. Any program can be run as the server using the -qws command-line option. Clients communicate with the server using shared memory. Communication is kept to a minimum; clients perform all drawing operations directly to the frame-buffer, without passing through the server, and are responsible for drawing their own title bars and other decorations. This is all handled transparently by the Qt/Embedded library. Clients can exchange messages using QCOP channels. The server simply broadcasts QCOP messages to all applications listening to a given channel. Applications can respond in a slot connected to a received() signal. Messages can be accompanied by binary data, typically serialized using the QDataStream class, described in Non-Graphical Classes [p. 28]. The QProcess class provides another asynchronous inter-process communication mechanism. It is used to start external programs and to communicate with them by writing to their standard input and by reading their standard output and standard error Fonts Qt/Embedded supports four different font formats: TrueType Fonts (TTF), PostScript Type1 Fonts, Bitmap Distribution Format (BDF) and Qt Pre-rendered Fonts (QPF). Support for other font formats can be added by subclassing QFontFactory, and can be made available as a plugin. Anti-aliased fonts are supported. Each TTF or Type1 glyph is rendered at a given point size when it is first used in a drawing or metrics operation, and the result is cached. Memory and CPU time can often be saved by pre-rendering a TTF or a Type1 file at the required sizes (for example, 10 and 12 points) and saving the result in QPF format. QPF files that contain the necessary fonts can be obtained by using the makeqpf tool, or by running applications with the -savefonts option. If all the fonts are in QPF format, Qt/Embedded can be reconfigured to compile out support for TTF and Type1 fonts, which will cut down the size of the Qt/Embedded library, and considerably reduce the amount of memory used to store fonts. For example, a 10-point Times QPF font for ASCII uses about 1300 bytes, and is directly mapped into memory from physical storage. Qt/Embedded fonts usually contain a small subset of Unicode, typically ASCII or Latin-1. A complete 16-point Unicode font uses over 1MB of memory. It is possible to save custom subsets of a font, for example one that contains all the glyphs necessary to spell the name of your product in 24-point Cappuccino Bold. 6
9 3.3. Input Devices Qt/Embedded 3.0 supports several mouse protocols out of the box: BusMouse, IntelliMouse, Microsoft and MouseMan. Qt/Embedded also supports the NEC Vr41XX touch-panel and the ipaq touch-panel. Developers can support custom pointer devices by subclassing QWSMouseHandler or QCalibratedMouseHandler. Qt/Embedded supports the standard 101-key keyboard and Vr41XX buttons. Custom keyboards and other non-pointer devices can be supported by subclassing QWSKeyboardHandler Input Methods Input methods for non-latin scripts (for example, Arabic, Chinese, Hebrew and Japanese) can be written to filter and convert keyboard input. Input method writers have the entire Qt API at their disposal. On devices without a keyboard, input methods constitute the only means of entering characters. Qtopia provides four input methods: a handwriting recognizer, a graphical QWERTY keyboard, a Unicode keyboard and a dictionary-based pickboard. Handwriting Unicode Keyboard Pickboard Figure 3. The standard input methods available on Qtopia 3.5. Screen Acceleration Screen operations can benefit from hardware acceleration by subclassing QScreen and QGfxRaster. Trolltech provides example accelerated drivers for Mach64 and Voodoo3 cards, and can be contracted to write custom drivers. 7
10 4. Development Environment Qt/Embedded development can take place using familiar Unix and Windows tools. Several multi-platform tools are provided to make development easier and faster, notably Qt Designer. Unix users additionally benefit from a virtual frame-buffer that duplicates, pixel for pixel, the screen of a device. Applications for an embedded device can be compiled on any platform equipped with a cross-development tool chain. The most common option is to build a cross-platform GNU C++ compiler (g++) with libc and the binary utilities on a Unix system. An alternative approach involves using a desktop version of Qt, such as Qt/X11 or Qt/Windows, for most of the development phase. This allows developers to use a familiar environment, for example, Microsoft Visual C++ or Borland C++. On Unix, many environments are available, such as KDevelop, which supports cross-development. If the Qt/Embedded application is developed on Unix, it can be compiled to run on the development machine in a separate console or in the virtual frame-buffer, an X11 application that simulates a frame-buffer. By specifying the device s width, height and color depth, the simulated frame-buffer will match the physical device, pixel for pixel. This saves developers from continuously re-flashing the device, and accelerates the compile, link and run cycle. It also allows developers to use standard debuggers and profilers on the development machine. If desired, Qt/Embedded applications can act as VNC (Virtual Network Computing) servers and be run over a network Qt s Supporting Tools Qt includes many tools to support embedded systems development, some of which are mentioned elsewhere in this document. The two most substantial tools (apart from the virtual frame-buffer mentioned above) are qmake and Qt Designer. The qmake tool is a Makefile generator for the Qt/Embedded library and for applications. It generates Makefiles for multiple platforms from a project file (.pro). qmake supports cross-development and shadow builds, and makes it easy to switch between different configurations. Developers can use Qt Designer to design dialogs visually instead of writing code. It uses Qt s layout managers to produce dialogs that resize smoothly, and is fully integrated with qmake. Qt Designer is covered in Dialogs [p. 19]. 5. Signals and Slots The signals and slots mechanism provides inter-object communication. It is easy to understand and use and it is fully supported by Qt Designer. GUI applications respond to user actions. For example, when a user clicks a menu item or toolbar button, the application executes some code. More generally, we want objects of any kind to communicate with each other. The programmer must relate events to the relevant code. Older toolkits use mechanisms that are crash-prone, inflexible, and not object-oriented. Trolltech has 8
11 invented a solution called signals and slots. Signals and slots is a powerful inter-object communication mechanism that can be used to completely replace the crude callbacks and message maps used by legacy toolkits. Signals and slots are fast, type-safe, flexible, fully object-oriented and implemented in C++. To associate some code with a button using the old callback mechanism, it is necessary to pass a pointer to a function to the button. When the button is clicked, the function is then called. Old toolkits do not ensure that arguments of the right type are given to the function when it is called, which makes crashes more likely. Another problem with the callback approach is that it tightly binds the GUI element to the functionality, making it difficult to develop classes independently. Qt s signals and slots mechanism is different. Qt widgets emit signals when events occur. For example, a button will emit a clicked signal when it is clicked. The programmer can choose Object1 signal1 signal2 connect( Object1, signal1, Object2, slot1 ) connect( Object1, signal1, Object2, slot2 ) Object2 signal1 slot1 slot2 Object3 signal1 slot1 connect( Object1, signal2, Object4, slot1 ) Object4 connect( Object3, signal1, Object4, slot3 ) slot1 slot2 slot3 Figure 4. An abstract view of some signals and slots connections to connect to a signal by creating a function (called a slot) and calling the connect() function to relate the signal to the slot. Qt s signals and slots mechanism does not require classes to have knowledge of each other, which makes it much easier to develop highly reusable classes. Signals and slots are type-safe, with type errors being reported by warnings rather than by crashes. For example, if a Quit button s clicked() signal is connected to the application s quit() slot, a user s click on Quit makes the application terminate. In code, this is written as connect( button, SIGNAL(clicked()), qapp, SLOT(quit()) ); Connections can be added or removed at any time during the execution of a Qt application. The signals and slots implementation smoothly extends C++ s syntax and takes full advantage of C++ s object-oriented features. Signals and slots can be overloaded or reimplemented and may appear in the public, protected or private sections of a class. 9
12 connect( fontfamilycombobox, activated(qstring), textedit, setfamily(qstring) ) connect( fontsizespinbox, valuechanged(int), textedit, setpointsize(int) ) connect( textedit, modificationchanged(bool), customstatusbar, modificationstatus(bool) ) Figure 5. An example of signals and slots connections 5.1. A Signals and Slots Example To benefit from signals and slots, a class must inherit from QObject or one of its subclasses and include the Q_OBJECT macro in the class s definition. Signals are declared in the signals section of the class, while slots are declared in the public slots, protected slots or private slots sections. Here s an example QObject subclass: class BankAccount : public QObject { Q_OBJECT public: BankAccount() { curbalance = 0; } int balance() const { return curbalance; } public slots: void setbalance( int newbalance ); signals: void balancechanged( int newbalance ); private: int curbalance; }; In the style of most C++ classes, the class BankAccount has a constructor, a get function balance(), and a set function setbalance(). The class also has a signal balancechanged(), which announces that the balance in the account has changed. Signals are not implemented; when a signal is emitted, the slots it is connected to are executed. The set function is declared in the public slots section, so it is a slot. Slots are standard member functions with an implementation that can be called like any other function, and which can also be connected to signals. Here s the implementation of the slot setbalance(): void BankAccount::setBalance( int newbalance ) { 10
13 } if ( newbalance!= curbalance ) { curbalance = newbalance; emit balancechanged( curbalance ); } The statement emit balancechanged( curbalance ); causes the balancechanged() signal to be emitted with the new current balance as its argument. The keyword emit, like signals and slots, is provided by Qt and is transformed into standard C++ by the C++ pre-processor. One object s signal can be connected to many different slots, and many signals can be connected to one slot in a particular object. Connections are made between signals and slots whose parameters have the same types. A slot can have fewer parameters than the signal and ignore the extra parameters Meta Object Compiler The signals and slots mechanism is implemented in pure standard C++. The implementation uses the C++ pre-processor and the Meta Object Compiler (moc) included with the Qt toolkit. The moc reads the application s header files and generates the necessary code to support signals and slots. Developers never edit or even need to look at the generated code. Makefiles generated by qmake include rules to run moc transparently, when required. In addition to handling signals and slots, moc supports Qt s translation mechanism, its property system and run-time type information. 6. Widgets Qt has a rich set of widgets (buttons, scroll bars, etc.) that cater for most situations. Qt s widgets are flexible and easy to subclass for special requirements. Widgets are instances of QWidget or one of its subclasses, and custom widgets are created by subclassing. QObject QTimer QWidget QDialog QFrame QSpinBox QLabel QLineEdit Figure 6. An extract from the QWidget class hierarchy 11
14 A widget may contain any number of child widgets. Child widgets are shown within the parent widget s area. A widget with no parent is a top-level widget (a window ), and is decorated with a configurable frame and title bar. Qt imposes no arbitrary limitations on widgets. Any widget can be a top-level widget; any widget can be a child of any other widget. The position of child widgets within the parent s area can be set automatically using layout managers [p. 19], or manually if preferred. When a parent widget is disabled, hidden or deleted, the same action is applied to all its child widgets recursively. Labels, message boxes, tooltips, etc., are not confined to using a single color, font and language. Qt s text-rendering widgets can display multi-language rich text using a HTML subset A Hello Example The complete source code for a program that displays Hello Qt/Embedded! follows: Figure 7. Hello Qt/Embedded! #include <qapplication.h> #include <qlabel.h> int main( int argc, char **argv ) { QApplication app( argc, argv ); QLabel *hello = new QLabel( "<font color=blue>hello" " <i>qt/embedded!</i></font>", 0 ); app.setmainwidget( hello ); hello->show(); return app.exec(); } 6.2. Common Widgets The screenshots below present the main Qt widgets, shown using the Windows style. Figure 8. A QLabel and a QPushButton laid out with a QHBox Figure 9. Two QRadioButtons and two QCheckBoxes laid out with a QButtonGroup 12
15 Figure 10. A QDateTimeEdit, a QLineEdit, a QTextEdit and a QComboBox laid out with a QGroupBox Figure 11. A QDial, a QProgressBar, a QSpinBox, a QScrollBar, a QLCDNumber and a QSlider laid out with a QGrid Figure 12. A QIconView, a QListView, a QListBox and a QTable laid out with a QGrid QComboBox, QLineEdit and QSpinBox s input can be constrained or validated using a QValidator subclass. Regular expressions can be used for validation. QTable, QListView, QTextEdit and other widgets that can display large amounts of data inherit QScrollView and automatically provide scroll bars. Many of Qt s built-in widgets can display images, for example, buttons, labels, menu items, etc. The QImage class supports the input, output and manipulation of images in several formats, including BMP, GIF, JPEG, MNG, PNG, PNM, XBM and XPM. 13
16 6.3. Canvas The QCanvas class provides a high-level interface to 2D graphics. It can handle a very large number of canvas items that represent lines, rectangles, ellipses, texts, pixmaps, animated sprites, etc. Canvas items can easily be made interactive (e.g. user movable). Figure 13. The Qtopia Asteroids game written with QCanvas Canvas items are instances of QCanvasItem subclasses. They are more lightweight than widgets, and they can be quickly moved, hidden and shown. QCanvas has efficient support for collision detection, and can list all the canvas items in a given area. QCanvasItem can be subclassed to provide custom item types and to extend the functionality of existing types. QCanvas objects are rendered by the QCanvasView class. Many QCanvasView objects can show the same QCanvas, but with different translations, scales, rotations and shears. QCanvas is ideal for data visualization. It has been used by customers for drawing road maps and for presenting network topologies. It is also suitable for fast 2D games with lots of sprites Custom Widgets Developers can create their own widgets and dialogs by subclassing QWidget or one of its subclasses. To illustrate subclassing, the complete code for an analog clock widget is presented. The AnalogClock widget displays the current time and updates itself automatically. Figure 14. Analog clock widget In analogclock.h, AnalogClock is defined like this: If you are in a country that recognizes software patents and where Unisys holds a patent on LZW decompression, Unisys may require you to license the technology to use GIF. 14
17 #include <qwidget.h> class AnalogClock : public QWidget { public: AnalogClock( QWidget *parent = 0, const char *name = 0 ); protected: virtual void timerevent( QTimerEvent *event ); virtual void paintevent( QPaintEvent *event ); }; AnalogClock inherits QWidget. It has a constructor typical of widget classes, with optional parent and name parameters. (Testing and debugging are easier if name is set.) The timerevent() function is inherited from QObject (a base class of QWidget) and is called at regular intervals by the system. The paintevent() function is inherited from QWidget and is called automatically whenever the widget needs to be redrawn. The timerevent() and paintevent() functions are two examples of event handlers. Application objects receive system messages as Qt events (QEvent objects). There are over fifty types of event, of which the most commonly used are MouseButtonPress, MouseButtonRelease, KeyPress, KeyRelease, Paint, Resize and Close. Objects can respond to events sent to them, and filter events destined for other objects. In analogclock.cpp, the functions declared in analogclock.h are implemented: #include <qdatetime.h> #include <qpainter.h> #include "analogclock.h" AnalogClock::AnalogClock( QWidget *parent, const char *name ) : QWidget( parent, name ) { starttimer( ); resize( 100, 100 ); } void AnalogClock::timerEvent( QTimerEvent * ) { update(); } void AnalogClock::paintEvent( QPaintEvent * ) { QCOORD hourhand[8] = { 2, 0, 0, 2, -2, 0, 0, -25 }; QCOORD minutehand[8] = { 1, 0, 0, 1, -1, 0, 0, -40 }; QTime time = QTime::currentTime(); QPainter painter( this ); 15
18 painter.setwindow( -50, -50, 100, 100 ); painter.setbrush( black ); for ( int i = 0; i < 12; i++ ) { painter.drawline( 44, 0, 46, 0 ); painter.rotate( 30 ); } painter.save(); painter.rotate( 30 * (time.hour() % 12) + time.minute() / 2 ); painter.drawconvexpolygon( QPointArray(4, hourhand) ); painter.restore(); } painter.save(); painter.rotate( 6 * time.minute() ); painter.drawconvexpolygon( QPointArray(4, minutehand) ); painter.restore(); The constructor tells the system to call timerevent() every twelve seconds to refresh the clock, and sets the widget s default size to 100 x 100. In timerevent(), the QWidget function update() is called to tell Qt that the widget needs to be repainted. Subsequently, Qt will generate a paint event and call paintevent(). In paintevent(), a QPainter object is used to draw the twelve notches and the time and minute hands on the widget. The QPainter class provides an API for painting widgets, pixmaps, vector images and PostScript in a uniform way. It provides functions to draw points, lines, polygons, ellipses, arcs, Bezier curves, etc. The coordinate system of a QPainter can be translated, scaled, rotated and sheared; the objects drawn can be clipped according to a window, and positioned on the widget using a viewport. Clipping can be used to reduce flicker when repainting. An area of the frame-buffer can be locked and accessed directly using the QDirectPainter subclass of QPainter. The files analogclock.h and analogclock.cpp completely define and implement the AnalogClock custom widget. This widget can be used immediately: #include <qapplication.h> #include "analogclock.h" int main( int argc, char **argv ) { QApplication app( argc, argv ); AnalogClock *clock = new AnalogClock; app.setmainwidget( clock ); clock->show(); return app.exec(); } 16
19 6.5. Main Windows The QMainWindow class lays out a set of related widgets to provide a framework for typical application main windows. A main window contains a set of standard widgets. The top of the main window contains a menu bar, beneath which toolbars are laid out. The toolbars can be moved to any dock area; main windows have dock areas at the top, left, right and bottom. Toolbars can also be dragged out of a dock area and floated as independent tool palettes. The bottom of the main window, below the bottom dock area, is occupied by a status bar. The central area contains any widget. Tooltips and What s this? help provide balloon help for the user-interface elements. For small screen devices, it can be preferable to define a standard QWidget template in Qt Designer and use that, rather than QMainWindow. The template typically has a menu bar and a toolbar side by side, and may not have a status bar at all. (Where necessary, status may be shown in the task bar or the title bar, for example.) 6.6. Menus The QPopupMenu widget presents menu items to the user in a vertical list. Popup menus can be standalone (e.g. a context menu), can appear in a menu bar, or can be a sub-menu of another popup menu. Each menu item can have an icon, a checkbox and an accelerator. Menu items usually correspond to actions (e.g. Save). Separator items are displayed as a line and are used to visually group related actions. Here s an example that creates a File menu with New, Open and Exit menu items: QPopupMenu *filemenu = new QPopupMenu( this ); filemenu->insertitem( "&New", this, SLOT(newFile()), CTRL+Key_N ); filemenu->insertitem( "&Open...", this, SLOT(open()), CTRL+Key_O ); filemenu->insertseparator(); filemenu->insertitem( "E&xit", qapp, SLOT(quit()), CTRL+Key_Q ); When a menu item is chosen, the corresponding slot is executed. As accelerators are rarely used on devices with no keyboard, Qt/Embedded is typically configured without accelerator support. This means that whereas &New would be rendered as New on a desktop machine, it will appear as New on an embedded device. The QMenuBar class implements a menu bar. It automatically sets its geometry to the top of its parent widget. It splits its contents across multiple lines if the parent window is not wide enough. Qt s built-in layout managers automatically take the menu bar into consideration. Qt s menu system is very flexible. Menu items can be enabled, disabled, added or removed dynamically. Menu items with customized appearance and behavior can be created by subclassing QCustomMenuItem Toolbars The QToolButton class implements a toolbar button with an icon, a 3D frame and an optional label. Toggle toolbar buttons turn features on and off. Other toolbar buttons execute a command. Different icons can be provided for the active, disabled and enabled modes, and for the on and off states. If only one icon is provided, Qt automatically distinguishes the state using visual cues, 17
20 for example, graying out disabled buttons. Pressing a toolbar button can also be used to trigger a popup menu. QToolButtons usually appear side-by-side within a QToolBar. An application can have any number of toolbars, and the user is free to move them around. Toolbars can contain widgets of almost any type, for example QComboBoxes and QSpinBoxes Balloon Help Modern applications use balloon help to briefly explain the purpose of user-interface elements. Qt provides two mechanisms for balloon help: tooltips and What s this? help. Tooltips are small, usually yellow, rectangles that appear automatically when the mouse pointer hovers over a widget. Tooltips are often used to explain a toolbar button, since toolbar buttons are rarely displayed with text labels. Here s how to set the tooltip of a Save toolbar button: QToolTip::add( savebutton, "Save" ); It is also possible to set a longer piece of text to be displayed in the status bar when the tooltip is shown. Devices that do not use a mouse (for example, those that use a stylus), may not have a means of hovering the mouse pointer over a widget, which is the normal mechanism for raising a tooltip. Such devices may not support tooltips at all (relying on What s this? help instead), or may use a gesture, for example, press and hold, to signify hovering. What s this? help is similar to tooltips, except that the user must request it. On a small screen device, What s this? help may be invoked by pressing a? help button that appears next to the application s X close button, and then pressing the relevant widget. What s this? help is typically longer than a tooltip. Here s how to set the What s this? text for a Save toolbar button: QWhatsThis::add( savebutton, "Saves the current file." ); The QToolTip and QWhatsThis classes provide virtual functions that can be reimplemented for more specialized behavior. Qtopia doesn t use either of these mechanisms to provide help. Instead it provides a? help button in each application s title bar, which launches the HTML help browser with the help contents page for the relevant application. It uses the press and hold gesture to invoke context (right click) menus and property dialogs Actions Applications usually provide the user with several different ways to perform a particular action. For example, most applications provide a Save action available from the menu (File Save), from the toolbar (the floppy disk toolbar button) and as an accelerator (Ctrl+S). The QAction class encapsulates this concept. It allows programmers to define an action in one place and then add that action to a menu or toolbar. Actions that only make sense as menu options can be added to menus directly. The following code implements a Save menu item and a Save toolbar button. Balloon help and an accelerator could easily be added, but are not included because they are rarely used for small devices. 18
21 QAction *saveact = new QAction( this ); saveact->settext( "Save" ); saveact->seticonset( QPixmap("save.png") ); connect( saveact, SIGNAL(activated()), this, SLOT(save()) ); saveact->addto( filemenu ); saveact->addto( toolbar ); In addition to avoiding duplication, using a QAction ensures that the state of menu items stays in sync with the state of toolbar buttons, and that tooltips are displayed when necessary. Disabling an action will disable any corresponding menu items and toolbar buttons. Similarly, if the user clicks a toggle toolbar button, the corresponding menu item will be checked or unchecked accordingly. 7. Dialogs Developers can build their own dialogs using the Qt Designer visual design tool. Qt uses layouts to automatically size and position widgets in relation to one another. This ensures that dialogs make the best use of the available screen space. The use of layouts also means that buttons and labels automatically resize to show their text in full regardless of language Layouts Qt provides layout managers for organizing child widgets within the parent widget s area. They feature automatic positioning and resizing of child widgets, sensible minimum and default sizes for top-level widgets, and automatic repositioning when the contents or the font changes. Using layouts, developers can write applications independently of the screen size or orientation, without wasting space or duplicating code. For internationalized applications, layouts ensure that buttons and labels take as little space as possible without cutting off the text, regardless of the language. Layouts also make it easy to accommodate certain user-interface components such as input methods and task bars. For example, when Qtopia users are entering text, the input method takes up screen space, and the application should adapt accordingly. Figure 15. Layout management on Qtopia 19
22 Qt provides three built-in layout managers: QHBoxLayout, QVBoxLayout and QGridLayout. Figure 16. QHBoxLayout, QVBoxLayout and QGridLayout QHBoxLayout organizes the managed widgets in a single horizontal row from left to right. QVBoxLayout organizes the managed widgets in a single vertical column, from top to bottom. QGridLayout organizes the managed widgets in a grid of cells; widgets may span multiple cells. In most cases, Qt s layout managers pick optimal sizes for managed widgets so that windows look good and resize smoothly. Developers can refine the layout using the following mechanisms: 1. Setting a minimum size, a maximum size or a fixed size for some child widgets. 2. Adding stretch items or spacer items. Stretch or spacer items fill empty space in a layout. 3. Changing the size policies of the child widgets. Programmers can fine tune the resize behavior of a child widget. Child widgets can be set to expand, contract, keep the same size, etc. 4. Changing the child widgets size hints. QWidget::sizeHint() and QWidget::minimumSize- Hint() return a widget s preferred size and preferred minimum size based on the contents. Built-in widgets provide appropriate reimplementations. 5. Setting stretch factors. Stretch factors allow relative growth of child widgets, e.g. two thirds of any extra space made available should be allocated to widget A and one third to widget B. Layouts can also run right-to-left and bottom-to-top. Right-to-left layouts are convenient for internationalized applications supporting right-to-left languages such as Arabic and Hebrew. Layouts can be nested to arbitrary levels. Here s an example of a dialog box, shown at two different sizes: 20
23 Figure 17. Small dialog and large dialog The dialog uses three layouts: a QVBoxLayout that groups the push buttons, a QHBoxLayout that groups the country listbox with the push buttons and a QVBoxLayout that groups the Now please select a country label with the rest of the widget. A stretch item maintains the gap between the < Prev and Help buttons. The dialog s widgets and layouts are created with the following code: QVBoxLayout *buttonbox = new QVBoxLayout( 6 ); buttonbox->addwidget( new QPushButton("Next >", this) ); buttonbox->addwidget( new QPushButton("< Prev", this) ); buttonbox->addstretch( 1 ); buttonbox->addwidget( new QPushButton("Help", this) ); QListBox *countrylist = new QListBox( this ); countrylist->insertitem( "Canada" ); /* */ countrylist->insertitem( "United States of America" ); QHBoxLayout *middlebox = new QHBoxLayout( 11 ); middlebox->addwidget( countrylist ); middlebox->addlayout( buttonbox ); QVBoxLayout *toplevelbox = new QVBoxLayout( this, 6, 11 ); toplevelbox->addwidget( new QLabel("Now please select a country", this) ); toplevelbox->addlayout( middlebox ); Alternatively, the dialog can be designed using Qt Designer with just 17 mouse clicks. Figure 18. Laying out a form in Qt Designer 21
24 7.2. Qt Designer Qt Designer is a visual user-interface design tool. Qt applications can be written entirely in source code, or using Qt Designer to speed up development. Designing a form with Qt Designer Figure 19. Qt Designer is a simple process. Developers click a toolbar button representing the widget they want, then click on a form to place the widget. The widget s properties can then be changed using the property editor. The precise positions and sizes of the widgets do not matter. Developers select widgets and apply layouts to them. For example, some button widgets could be selected and laid out side-by-side by choosing the lay out horizontally option. This approach makes design very fast, and the finished forms will scale properly to fit whatever window size is available. Qt Designer eliminates the time-consuming compile, link and run cycle for user interface design. This makes it easy to correct or change designs. Qt Designer s preview options let developers see their forms in any style, including custom styles. Qt Designer provides live preview and editing of database data through its tight integration with Qt s database classes. Developers can create both dialog style applications and main window style applications with menus, toolbars, balloon help, etc. Several form templates are supplied, and developers can create their own templates to ensure consistency across an application or family of applications. Qt Designer uses wizards to make creating toolbars, menus and database applications as fast and 22
25 easy as possible. Programmers can create their own custom widgets that can easily be integrated with Qt Designer. Form designs are stored in human-readable.ui files, and converted into C++ header and source files by the uic (User Interface Compiler). The qmake build tool automatically includes build rules for uic in the Makefiles it generates, so developers do not need to invoke uic themselves. Alternatively,.ui files can be loaded at run-time by applications, and converted into fully functional forms. This allows customers to modify the look of an application without recompiling, and can also be used to reduce the size of applications Built-in Dialogs Qt includes ready-made dialog classes with static convenience functions for the most common tasks. Screenshots of some of Qt s standard dialogs are presented below. QMessageBox is used to provide the user with information or to present the user with simple choices (e.g. Yes or No ). Figure 20. A QMessageBox QProgressDialog displays a progress bar and a Cancel button. Figure 21. A QProgressDialog QWizard provides a framework for wizard dialogs. Figure 22. A QWizard 23
26 Qt also includes QColorDialog, QFileDialog, QFontDialog and QPrintDialog. These classes are more suitable for desktop applications and are usually compiled out of Qt/Embedded. 8. Look and Feel Qt desktop applications adopt the style, or look and feel, of their execution environment, e.g. Windows XP, Mac OS X, Linux. Qt/Embedded applications can use any of these styles, or can use custom styles, statically or as plugins. Developers can customize both the widget style and the window decorations Widget Style A style is a QStyle subclass that implements the look and feel of Qt s widgets. Qt/Embedded programmers are free to use and modify existing styles or implement their own styles using Qt s style engine. The built-in styles available on Qt/Embedded are Windows, Motif, MotifPlus, CDE, Platinum and SGI. The style can be set dynamically on a per-application basis, and even on a per-widget basis. Figure 23. Comboboxes in the different built-in styles A family of applications can be given a distinctive look by writing a custom style. Custom styles can be defined by subclassing QStyle, QCommonStyle or any descendent of QCommonStyle. It is easy to make small modifications to existing styles by reimplementing one or two virtual functions from the appropriate base class. A style can be compiled as a plugin. With plugins, developers can preview a form in their device s custom style in Qt Designer. Style plugins also give users the opportunity to change the look of the device without recompiling. QStyle QCommonStyle QMotifStyle QCDEStyle QMotifPlusStyle QSGIStyle QWindowsStyle QPlatinumStyle Figure 24. The QStyle class hierarchy Qt s built-in widgets are style-aware and will automatically repaint themselves when the style changes. Custom widgets and dialogs are almost always combinations of built-in widgets and layouts, and are automatically style-aware. On the rare occasions that it is necessary to write a custom widget from scratch, developers can use QStyle to draw primitive user-interface elements rather than drawing raw rectangles directly. 24
27 8.2. Window Decorations Top-level windows are decorated by a title bar and a frame. Qt/Embedded includes these window manager styles: BeOS, Hydro, KDE and Windows. Figure 25. Windows with different window decorations Decorations can be configured on a per-window basis, if required. Custom styles are created by subclassing QWSDecoration, and distributed as plugins. For more control over the window manager s behavior, developers can subclass QWSManager. 9. Internationalization Qt/Embedded fully supports Unicode, the international standard character set. Developers can freely mix Arabic, English, Hebrew, Japanese, Russian, and every other language supported by Unicode, in their applications. Qt/Embedded also includes tools to support application translation to help companies reach international markets Unicode Qt uses the QString class to store Unicode strings. QString replaces the crude const char *; constructors and operators are provided to handle conversion between QString and const char *. Programmers can copy QStrings by value without penalty, since QString uses implicit sharing (copy on write) to reduce memory use. Qt also provides QCString to efficiently store ASCII strings. Qt provides a powerful Unicode text rendering engine for all text that is displayed on screen, from the simplest label to the most sophisticated rich-text editor. The engine supports advanced features such as special line breaking behavior, bidirectional writing and diacritical marks. It renders most of the world s writing systems, including Arabic, Chinese, Cyrillic, English, Greek, Hebrew, Japanese, Korean, Latin and Vietnamese. The engine is optimized for the common case: a single line of plain text with an optional accelerator (e.g. File). Conversion to and from different encodings and charsets is handled by QTextCodec subclasses. Qt 3.0 supports 37 different encodings, including Big5 and GBK for Chinese, EUC-JP, JIS and 25
28 Shift-JIS for Japanese, KOI8-R for Russian and the ISO 8859 series. They can be compiled as part of the library or as plugins, or compiled out using the feature mechanism Translating Applications Qt provides tools and functions to help developers provide applications in their customers native languages. To make a string translatable, simply wrap it in a call to tr() (read translate ): savebutton->settext( tr("save") ); tr() attempts to replace a string literal (e.g. Save ) with a translation if one is available; otherwise it uses the original text. For example, English could be used as the source language and Chinese as the translated language, or vice versa. The argument to tr() is converted to Unicode from the application s default encoding. tr() s general syntax is Context::tr("source text", "comment") The context is the name of a QObject subclass. It is usually omitted, in which case the class containing the tr() call is used as the context. The source text is the text to translate. The comment is optional; along with the context, it provides additional information for human translators. Translations are stored in QTranslator objects, which use memory-mapped.qm files (Qt Message files). Each.qm file contains the translations for a particular language. The language can be changed at run-time; any dialog created using Qt Designer can retranslate itself on the fly with no special provisions. Qt provides three tools for preparing.qm files: lupdate, Qt Linguist and lrelease. 1. lupdate extracts all the (context, source text, comment) triples from the source code, including Qt Designer.ui files, and generates a.ts file (Translation Source file). The.ts files are human-readable. 2. Translators use Qt Linguist to provide translations for the source texts in the.ts files. 3. Highly compressed.qm files are generated by running lrelease on the.ts files. The.qm files are used on the embedded device. These steps are repeated as often as necessary during the lifetime of an application. It is perfectly safe to run lupdate frequently, as it reuses existing translations and marks translations for obsolete source texts without eliminating them. 26
29 9.3. Qt Linguist Qt Linguist is a Qt application that helps translators translate Qt applications. Translators can edit.ts files by hand, or more conveniently using Qt Linguist. The.ts file s contexts are Figure 26. Qt Linguist listed in the left-hand side of the application s window. The list of source texts for the current context is displayed in the top-right area, along with translations. By selecting a source text, the translator can enter a translation, mark it done or unfinished and proceed to the next unfinished translation. Keyboard shortcuts are provided for all the common navigation options: Done & Next, Next Unfinished, etc. The user interface s dockable windows can be reorganized to suit the translators preferences. Applications often use the same phrases many times in different source texts. Qt Linguist automatically displays intelligent guesses based on previously translated strings and predefined translations at the bottom of the window. Guesses often serve as a good starting point that helps translators translate similar texts consistently. Qt Linguist can optionally validate translations to ensure that accelerators and ending punctuation are translated correctly. Qt Linguist also detects slight changes in source texts and automatically suggests appropriate translations. These translations are marked as unfinished so that a translator can easily find them and check them. 27
30 10. Non-Graphical Classes Qt/Embedded provides a full range of non-graphical classes that provide data containers (collection classes), input/output, networking, database interaction and threading Collection Classes Collection classes are used to store groups of items in memory. Qt/Embedded provides two sets of collection classes: pointer-based collections and value-based collections. The pointer-based collection classes are QDict<Key,T>, QPtrList<T>, QPtrQueue<T>, QPtrStack<T>, QPtrVector<T> and QCache<T>. These classes are often used for storing pointers to QWidgets and QObjects, and Qt/Embedded s internals make heavy use of them. The pointer-based collection classes can optionally take ownership of the objects they contain and automatically delete them when the collection is destroyed, simplifying memory management. The value-based collection classes are QMap<Key,T>, QValueList<T>, QValueStack<T>, QValueVector<T> and QStringList. They have an interface very similar to the STL containers. Qt/Embedded also provides the low-level QMemArray<T> class with its subclasses QBitArray, QByteArray and QPointArray. These classes are very efficient for handling basic plain old data types. To avoid the problem of code bloat associated with templates, Qt/Embedded uses private non-template classes to implement the functionality of template classes. The template classes are only a thin layer that converts special types to generic pointers, and results in very little binary code. Another technique, implicit sharing, is used in the value-based containers to avoid needless duplication of data. These optimizations make Qt s collection classes suitable to embedded development Input/Output Qt provides QTextStream and QDataStream to read and write text and binary data in a file, a buffer, a socket or a custom device. QDataStream can be used to serialize basic C++ types and many Qt types. Directories are manipulated using QDir. The QFileInfo class provides more detailed information about a file, such as its size, permissions, creation time and last modification time. Transparent access to remote files is provided by QUrlOperator. In addition to local file system access, Qt supports the the FTP and HTTP protocols and can be extended to support other protocols. For example, files can be downloaded using FTP like this: QUrlOperator op; op.copy( QString("ftp://ftp.trolltech.com/qt/INSTALL"), QString("file:/tmp") ); URLs can easily be parsed and recomposed using QUrl. Image files are usually read by creating a QImage with the file name as argument. Printing text and images is handled by QPainter. These classes are described in Widgets [p. 11]. User settings and other application settings can easily be stored on disk using the QSettings class. Settings are stored in text files under hierarchical keys, 28
31 e.g. /Tools/Zoomer/RecentFiles. Booleans, numbers, Unicode strings and lists of Unicode strings are supported. Qt s XML module provides a SAX parser and a DOM parser, both of which read well-formed XML and are non-validating. The SAX (Simple API for XML) implementation follows the design of the SAX2 Java implementation, and is especially suitable for simple parsing requirements and for very large files. The DOM (Document Object Model) Level 2 implementation follows the W3C recommendation and includes namespace support Networking Qt provides an interface for writing TCP/IP clients and servers. The QSocket class provides an asynchronous buffered TCP connection. Functions such as QSocket::connectToHost() and QSocket::writeBlock()can be called at any time without freezing the application s user interface. Sockets emit the readyread() signal when there is data available to read. The QSocketDevice provides an abstraction for the underlying functionality for QSocket and QServerSocket, and can be used for UDP Database The Qt SQL module provides a uniform interface for accessing SQL databases. Qt includes native drivers for Oracle, Microsoft SQL Server, Sybase Adaptive Server, PostgreSQL, MySQL and ODBC. Programs can access multiple databases using multiple drivers simultaneously. Programmers can easily execute any SQL statements. Qt also provides a high-level C++ interface that programmers can use to generate the appropriate SQL statements automatically. Any Qt widget, including custom widgets, can be made data-aware. Qt also includes some database-specific convenience widgets, to simplify the creation of dialogs and windows that present records as forms or in tables. Data-aware widgets automatically support browsing, updating and deleting records. Most database designs require that new records have a unique key that cannot be guessed by Qt, so insertion usually needs a small amount of code to be written. The programmer can easily force the user to confirm actions, e.g. deletions. Using the facilities that the Qt SQL module provides, it is straightforward to create database applications that use foreign key lookups, present master-detail relationships, and support drill-down. Qt s SQL module is fully integrated with Qt Designer. Qt Designer can preview database forms and tables using live data if desired, allowing developers to browse, delete and update records. Qt Designer has templates and wizards to make creating database forms fast and simple Multi-Threading GUI applications often use multiple threads: one thread to keep the user interface responsive, and one or many other threads to perform time-consuming activities such as reading large files and performing complex calculations. Qt/Embedded can be configured to support multi-threading, and provides four threading classes: QThread, QMutex, QSemaphore and QWaitCondition. 29
32 11. Qt/Embedded in the Wider World Qt/Embedded makes Linux a viable platform for embedded GUI applications. It is an implementation of a mature, consistent, object-oriented toolkit that includes many tools to ease and speed development. Qt/Embedded is already used by major companies and is attracting software developers from both the commercial sector and from the open source community. Qt/Embedded became commercially available for the first time in September It is a port of the Qt toolkit which has been powering both commercial and open source applications since Qt/Embedded is already used by enterprises and individuals across the world. Organizations that wish to make use of a ready-made software environment for specialized devices such as PDAs and WebTVs, can license Qtopia, an environment created by Trolltech that is built with Qt/Embedded. Qtopia is used in the Sharp Zaurus device (shown on the cover-page) and includes a PIM (Personal Information Management) application suite. Qtopia is also available in open source form at Qtopia is described in the Qtopia Whitepaper. Insigna Solutions offers a Java Virtual Machine for Qt/Embedded. The Qt API is used to implement the Java AWT, resulting in a look and feel that is consistent with C++ applications. IBM and OTI (Object Technology International) also provide a Java solution for Qt/Embedded. Their Simple Widget Toolkit is implemented using the Qt API. Qt has an active and helpful user community who communicate using the qt-interest mailing list. See to subscribe or to browse the archive. Qt s extensive documentation is available on-line at Developers can evaluate Qt/Embedded, with support, for 30 days. See for details. For further information, [email protected]. A small sample of the applications that have been developed with Qt/Embedded are shown below. Opera Software has developed a fast Qt/Embedded web-browser that supports HTML 4.0, CSS1, JavaScript 1.3 and cookies. 30
33 Figure 27. Konqueror/Embedded by the KDE team Port of NetHack by Warwick Allison Figure 28. Port of KDE s Sokoban game by Steve Dunham A SID player by Markus Gritsch 31
34 Index About box, 23 Acceleration hardware, 7 Accelerator, 18, 27 Action, 18 Alpha-blended pixmap, 4 Analog clock, 14 Animation, 14 Anti-aliased font, 4, 6 Aqua, 25 Arabic, 7 20, 25 ARM, 4 Array, 28 Assistant, 23 Asynchronous I/O, 6 Auto-deletion, 28 Automatic layout, 19 AWT, 30 Balloon help, 18 BDF, 6 BeOS, 25 Bezier curve, 16 Bidirectional writing, 25 Big5, 26 Binary serialization, 28 Bit depth, 4 Bitmap, 5, 13 Bloat problem, 28 BMP, 13 Borland C++, 8 Box layout, 12, 20 Browser, 30 BusMouse, 7 Button, 12 Cache, 28 Caching, 5 Callback, 9 Canvas, 14 CDE, 24 Central area, 17 char, 25 Charmap, 26 Charset, 26 Checkbox, 12 Child widget, 12, 19 Chinese, 7, 25 clicked(), 9 Client, 6, 29 Clipping, 16 Clock, 14 Code bloat problem, 28 Codec, 26 Collection class, 28 Collision testing, 14 Color, 24 Combobox, 13 Comment, 26 Communication, 6, 9 Compiler, 4, 8 Compiler features, 11 Component, 9 Configuration, 5, 29 connect(), 9 Connection, 9, 18 Container, 28 Context, 26 Context menu, 17 Control, 11 Copy on write, 5 Cross-development, 8 CSS1, 30 Custom canvas item, 14 Custom style, 24 Custom widget, 23, 29 Cyrillic, 25 Data visualization, 14 Database, 22, 29 Date, 13 Debugger, 8 Decorations, 6, 25 Default widget size, 19 Defaults, 29 Delete, 28 Designer, 8, 21 26, 29 Desktop, 6 8, 24 Device, 5 Diacritical mark, 25 Dial, 13 Dialog, 23 Dictionary, 28 Directory, 28 DOM, 29 Drawing, 24 Drill-down, 29 Driver, 5, 7 Druid, 23 Dynamic dialog, 23 Editor, 13 Embedded Linux, 4, 5 Emitting a signal, 11 Encoding, 26 English, 25 Ericsson, 4 Error, 23 EUC-JP, 26 Event, 9, 15 exec(), 12 Fatal error, 23 Features, 5 File, 28 Flash, 5, 8 Flicker, 16 Font, 19, 25 Foreign key, 29 Form, 21 Frame, 12, 25 Frame-buffer, 4, 5 8, 16 FTP, 28 g++, 8 Game, 14 GBK, 26 GCC, 8 Geometry, 12, 19 GIF, 13 Graph, 14 Graphic card, 4 Graphics, 7, 13 Greek, 25 Grid layout, 20 GUI application, 17 Handwriting, 7 Hebrew, 7 20, 25 Hierarchical tree view, 13 Hover help, 18 HTML, 12, 30 HTTP, 28 Icon, 13 17, 18 Icon view, 13 Image, 13, 28 Implicit sharing, 5 25, 28 Inheriting, 10 14, 17 Input method, 7, 19 Input/output, 28 Input validation, 13 Insigna Solutions, 30 Intel x86, 4 IntelliMouse, 7 Internationalization, 19, 25 Introspection, 11 IP, 29 ipaq, 7 IPC, 6 ISO 8859, 26 Japanese, 7 25, 27 Java, 29 Java Virtual Machine, 30 JavaScript, 30 JIS, 26 JPEG, 13 KDE, 25 32
35 KDevelop, 8 Key, 29 Keyboard, 5 7, 7 KOI8-R, 26 Korean, 25 Label, 12 Language, 19, 25 Latin, 25 Layout, 12, 19 LCD, 13 libc, 8 Library, 5 6, 6 Line breaking, 25 Line editor, 13 Linguist, 26 Linker, 8 Linking, 5 Linux, 4, 5 List, 28, 28 List box, 13 List view, 13 Localization, 25 Look and feel, 24 lrelease, 26 lupdate, 26 Mach64, 7 Macintosh, 5 Magic, 11 Main window, 17 Makefile, 8, 11 Makefiles, 23 Map, 28 Master-detail, 29 Maximum size, 20 Memory array, 28 Menu bar, 17, 19 Message box, 23 Message map, 9 Messaging, 15 Meta Object Compiler, 11 MFC, 9 Microsoft mouse, 7 Microsoft SQL Server, 29 Microsoft Visual C++, 8 Microsoft Windows, 5 24, 25 Minimum size, 20 MIPS, 4 MNG, 13 moc, 11 Motif, 9, 24 Motorola 68000, 4 Mouse, 5 MouseMan, 7 Multi-line editor, 13 Multi-threading, 29 MySQL, 29 NEC Vr41XX, 7 Networking, 28, 29 Notebook, 23 Object-oriented programming, 9 OCI, 29 ODBC, 29 Opera Software, 30 Operating system, 4 Oracle, 29 Ownership, 28 Painting, 15 16, 24 Parent widget, 12, 19 Peripheral, 5 Pickboard, 7 Picture, 13 Pixmap, 16 Plain old data, 28 Platforms, 6 Platinum, 24 Plugin, 5, , 26 PNG, 13 PNM, 13 Pointer-based collection, 28 Pointer device, 7 Popup menu, 17 Positioning, 19 PostgreSQL, 29 PostScript, 16 PostScript font, 6 PowerPC, 4 Pre-processor, 5, 11 Preferences, 24, 29 Preferred size, 20 Primary key, 29 Printer, 16 Private class, 28.pro, 8 Process, 6, 6 Profiler, 8 Progress bar, 13, 23 Property, 11 Property box, 23 Push button, 12 QAction, 18 QApplication, 12 QBitArray, 28 QBitmap, 5 QButtonGroup, 12 QByteArray, 28 QCache, 28 QCalibratedMouseHandler, 7 QCanvas, 14 QCanvasItem, 14 QCanvasView, 14 QCDEStyle, 24 QCheckBox, 12 QColorDialog, 24 QComboBox, 13, 13 QCommonStyle, 24, 24 QCOP, 6 QCString, 25 QCustomMenu- Item, 17 QDataStream, 6, 28 QDateEdit, 13 QDateTimeEdit, 13 QDial, 13 QDialog, 11 QDict, 28 QDir, 28 QDirectPainter, 16 QEvent, 15 QFileDialog, 24 QFileInfo, 28 QFontDialog, 24 QFontFactory, 6 QFrame, 11 QGfxRaster, 7 QGridLayout, 13 13, 20 QGroupBox, 13 QHBoxLayout, 12, 20 QIconView, 13 QImage, 13, 28 QLabel, 11, 12 QLCDNumber, 13 QLineEdit, 11 13, 13 QListBox, 13 QListView, 13, 13.qm, 26 QMainWindow, 17 qmake, 8 11, 23 QMap, 5, 28 QMemArray, 28 QMenuBar, 17 QMessageBox, 23 QMotifPlusStyle, 24 QMotifStyle, 24 QMutex, 29 QNX, 4 QObject, 9, , 28 QPainter, 16, 28 QPalette, 5 QPF, 6 QPicture, 5 QPixmap, 5 QPlatinumStyle, 24 QPointArray, 28 QPopupMenu, 17 QPrintDialog, 24 QProcess, 6 QProgressBar, 13 QProgressDialog, 23 QPtrList, 28 QPtrQueue, 28 QPtrStack, 28 QPtrVector, 28 QPushButton, 12 QRadioButton, 12 QRegExp, 13 QScreen, 7 QScrollBar, 13 QScrollView, 13 QSemaphore, 29 33
36 QServerSocket, 29 QSettings, 29 QSGIStyle, 24 QSlider, 13 QSocket, 29 QSocketDevice, 29 QSpinBox, 11 13, 13 QStatusBar, 17 QString, 5 25, 28 QStringList, 28 QStyle, 24 Qt Designer, 8, 21 26, 29 Qt Linguist, 26 QTabDialog, 23 QTable, 13, 13 QTextCodec, 26, 28 QTextEdit, 13, 13 QTextStream, 28 QThread, 29 QTimeEdit, 13 QTimer, 11 QTL, 28 QToolBar, 18 QToolButton, 18 QToolTip, 18 Qtopia, 7 14, 19 QTranslator, 26 Queue, 28 quit(), 9 QUrl, 28 QUrlOperator, 28 QValidator, 13 QValueList, 28 QValueStack, 28 QValueVector, 28 QVBoxLayout, 20 QWaitCondition, 29 QWERTY, 7 QWhatsThis, 18 QWidget, 11, 28 QWindowsStyle, 24 QWizard, 23 QWSDecoration, 25 QWSKeyboard- Handler, 7 QWSManager, 25 QWSMouseHandler, 7 Radio button, 12 RAM, 4 Reference counting, 5 Registry, 29 Regular expression, 13 Relative growth, 20 Repositioning, 19 Resizing, 19 Reusability, 9 Rich text, 12 Right-to-left languages, 20, 25 ROM, 5 Rotation, 14, 16 RTTI, 11 Run-time type information, 11 SAX, 29 Scale, 14, 16 Screen, 8 Screen rotation, 4 Screen size, 4 17, 19 Screens, 7 Scroll bar, 13, 13 Scroll view, 13, 13 Separator item, 17 Serialization, 28 Server, 4 6, 29 Settings, 29 SGI, 24 Shadow build, 8 Shared library, 5 Shared memory, 6 Sharing, 5 25, 28 Shear, 14, 16 Shift-JIS, 26 Signal, 9 Size, 19 Size policy, 20 Slider, 13 Slot, 9 Socket, 29 Source text, 26 Spacer item, 20 Spin box, 13 Spreadsheet, 13 Sprite, 14 SQL, 29 Stack, 28, 28 Static linking, 5 Status bar, 17 STL, 28 Storage, 5 26, 29 Stream, 28 Stretch, 20 Stretch factor, 20 String, 25 StrongARM, 4 Style, 24 Stylus, 7, 18 Sub-menu, 17 Subclassing, 10 14, 17 Sybase, 29 T9, 7 Tab widget, 23 Table, 13 TCP, 29 TDS, 29 Template, 28 Text editor, 13 Text rendering, 25 Text translation, 26 Theme, 24 Thread, 29 Time, 13 Timer, 15 Title bar, 12, 25 Toggle button, 18 Tool chain, 8 Toolbar, 17 18, 19 Tooltip, 18 Touch-panel, 7, 18 tr(), 26 Transformation, 14, 16 Translation, 11, 26 Tree view, 13 TrueType font, 6.ts, 26 Type safety, 9 Type1 font, 6 UDP, 29.ui, 23, 26 Unicode, 6, , 29 Unisys, 13 Unix, 4, 8 URL, 28 User input, 13 User settings, 29 Validation, 13 Value-based collection, 28 Vector, 28, 28 Vector image, 16 VGA16, 4 Vietnamese, 25 Viewport, 16 Virtual framebuffer, 8 Visualization, 14 VNC, 8 Voodoo3, 7 Vr41XX, 7 W3C, 29 Warning, 23 Web-browser, 30 What s this?, 18 Widget, 11 Widget style, 24 Window, 23 Window manager, 25 Windowing system, 5 Windows, 5, 8 24, 25 Wizard, 23, 29 Writing system, 25 X11, 4 5, 8 XBM, 13 XML, 29 XPM, 13 34
Qt 3.3 Whitepaper. Trolltech. Abstract
Qt 3.3 Whitepaper Trolltech www.trolltech.com Abstract This whitepaper describes the Qt C++ toolkit. Qt supports the development of multiplatform GUI applications with its write once, compile anywhere
Surface and Volumetric Data Rendering and Visualisation
Surface and Volumetric Data Rendering and Visualisation THE Qt TOOLKIT Department of Information Engineering Faculty of Engineering University of Brescia Via Branze, 38 25231 Brescia - ITALY 1 What is
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
EuroPython 2006, CERN, Geneva. 2006 David Boddie and Torsten Marek * Qt and Trolltech are registered trademarks of Trolltech ASA
Introducing PyQt4* for GUI Application Development David Boddie [email protected] Torsten Marek [email protected] EuroPython 2006, CERN, Geneva 2006 David Boddie and Torsten Marek * Qt and Trolltech
Creating Interactive PDF Forms
Creating Interactive PDF Forms Using Adobe Acrobat X Pro Information Technology Services Outreach and Distance Learning Technologies Copyright 2012 KSU Department of Information Technology Services This
Ansur Test Executive. Users Manual
Ansur Test Executive Users Manual April 2008 2008 Fluke Corporation, All rights reserved. All product names are trademarks of their respective companies Table of Contents 1 Introducing Ansur... 4 1.1 About
Access 2007 Creating Forms Table of Contents
Access 2007 Creating Forms Table of Contents CREATING FORMS IN ACCESS 2007... 3 UNDERSTAND LAYOUT VIEW AND DESIGN VIEW... 3 LAYOUT VIEW... 3 DESIGN VIEW... 3 UNDERSTAND CONTROLS... 4 BOUND CONTROL... 4
13 Managing Devices. Your computer is an assembly of many components from different manufacturers. LESSON OBJECTIVES
LESSON 13 Managing Devices OBJECTIVES After completing this lesson, you will be able to: 1. Open System Properties. 2. Use Device Manager. 3. Understand hardware profiles. 4. Set performance options. Estimated
SIMATIC. WinCC V7.0. Getting started. Getting started. Welcome 2. Icons 3. Creating a project 4. Configure communication 5
SIMATIC WinCC V7.0 SIMATIC WinCC V7.0 Printout of the Online Help 1 Welcome 2 Icons 3 Creating a project 4 Configure communication 5 Configuring the Process Screens 6 Archiving and displaying values 7
Operating Systems. and Windows
Operating Systems and Windows What is an Operating System? The most important program that runs on your computer. It manages all other programs on the machine. Every PC has to have one to run other applications
Software User's Guide
BROTHER QL-500/550/650TD/1050/1050N Software User's Guide QL-500 QL-650TD QL-550 QL-1050/1050N 1 Contents Contents....................................................................................2................................................................................4
Design document Goal Technology Description
Design document Goal OpenOrienteering Mapper is a program to draw orienteering maps. It helps both in the surveying and the following final drawing task. Support for course setting is not a priority because
Introduction to Microsoft Word 2008
1. Launch Microsoft Word icon in Applications > Microsoft Office 2008 (or on the Dock). 2. When the Project Gallery opens, view some of the available Word templates by clicking to expand the Groups, and
Microsoft Publisher 2010 What s New!
Microsoft Publisher 2010 What s New! INTRODUCTION Microsoft Publisher 2010 is a desktop publishing program used to create professional looking publications and communication materials for print. A new
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
Building Applications With DUIM
Building Applications With DUIM Release 1.0 Dylan Hackers January 28, 2016 CONTENTS 1 Copyright 3 2 Preface 5 2.1 About this manual............................................ 5 2.2 Running examples in
[PRAKTISCHE ASPEKTE DER INFORMATIK SS 2014]
2014 Institut für Computergraphik, TU Braunschweig Pablo Bauszat [PRAKTISCHE ASPEKTE DER INFORMATIK SS 2014] All elemental steps that will get you started for your new life as a computer science programmer.
Building a Python Plugin
Building a Python Plugin QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi This work is licensed under a Creative Commons Attribution 4.0 International License. Building a Python
NDA-30141 ISSUE 1 STOCK # 200893. CallCenterWorX-Enterprise IMX MAT Quick Reference Guide MAY, 2000. NEC America, Inc.
NDA-30141 ISSUE 1 STOCK # 200893 CallCenterWorX-Enterprise IMX MAT Quick Reference Guide MAY, 2000 NEC America, Inc. LIABILITY DISCLAIMER NEC America, Inc. reserves the right to change the specifications,
Adobe Acrobat 9 Pro Accessibility Guide: Creating Accessible Forms
Adobe Acrobat 9 Pro Accessibility Guide: Creating Accessible Forms Adobe, the Adobe logo, Acrobat, Acrobat Connect, the Adobe PDF logo, Creative Suite, LiveCycle, and Reader are either registered trademarks
Dreamweaver and Fireworks MX Integration Brian Hogan
Dreamweaver and Fireworks MX Integration Brian Hogan This tutorial will take you through the necessary steps to create a template-based web site using Macromedia Dreamweaver and Macromedia Fireworks. The
Embroidery Fonts Plus ( EFP ) Tutorial Guide Version 1.0505
Embroidery Fonts Plus ( EFP ) Tutorial Guide Version 1.0505 1 Contents Chapter 1 System Requirements.................. 3 Chapter 2 Quick Start Installation.................. 4 System Requirements................
User Guide Win7Zilla
User Guide Win7Zilla Table of contents Section 1: Installation... 3 1.1 System Requirements... 3 1.2 Software Installation... 3 1.3 Uninstalling Win7Zilla software... 3 Section 2: Navigation... 4 2.1 Main
Qt in Education. The Qt object model and the signal slot concept
Qt in Education The Qt object model and the signal slot concept. 2010 Nokia Corporation and its Subsidiary(-ies). The enclosed Qt Educational Training Materials are provided under the Creative Commons
Content Author's Reference and Cookbook
Sitecore CMS 6.2 Content Author's Reference and Cookbook Rev. 091019 Sitecore CMS 6.2 Content Author's Reference and Cookbook A Conceptual Overview and Practical Guide to Using Sitecore Table of Contents
Introduction to Microsoft Access 2003
Introduction to Microsoft Access 2003 Zhi Liu School of Information Fall/2006 Introduction and Objectives Microsoft Access 2003 is a powerful, yet easy to learn, relational database application for Microsoft
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
Writer Guide. Chapter 15 Using Forms in Writer
Writer Guide Chapter 15 Using Forms in Writer Copyright This document is Copyright 2005 2008 by its contributors as listed in the section titled Authors. You may distribute it and/or modify it under the
Content Author's Reference and Cookbook
Sitecore CMS 6.5 Content Author's Reference and Cookbook Rev. 110621 Sitecore CMS 6.5 Content Author's Reference and Cookbook A Conceptual Overview and Practical Guide to Using Sitecore Table of Contents
Module One: Getting Started... 6. Opening Outlook... 6. Setting Up Outlook for the First Time... 7. Understanding the Interface...
2 CONTENTS Module One: Getting Started... 6 Opening Outlook... 6 Setting Up Outlook for the First Time... 7 Understanding the Interface...12 Using Backstage View...14 Viewing Your Inbox...15 Closing Outlook...17
Maple Quick Start. Introduction. Talking to Maple. Using [ENTER] 3 (2.1)
Introduction Maple Quick Start In this introductory course, you will become familiar with and comfortable in the Maple environment. You will learn how to use context menus, task assistants, and palettes
A QUICK OVERVIEW OF THE OMNeT++ IDE
Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ 4.x Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.
Microsoft Access 2010 handout
Microsoft Access 2010 handout Access 2010 is a relational database program you can use to create and manage large quantities of data. You can use Access to manage anything from a home inventory to a giant
Network Probe User Guide
Network Probe User Guide Network Probe User Guide Table of Contents 1. Introduction...1 2. Installation...2 Windows installation...2 Linux installation...3 Mac installation...4 License key...5 Deployment...5
Chapter 15 Using Forms in Writer
Writer Guide Chapter 15 Using Forms in Writer OpenOffice.org Copyright This document is Copyright 2005 2006 by its contributors as listed in the section titled Authors. You can distribute it and/or modify
Interactive Voting System. www.ivsystem.nl. IVS-Basic IVS-Professional 4.4
Interactive Voting System www.ivsystem.nl IVS-Basic IVS-Professional 4.4 Manual IVS-Basic 4.4 IVS-Professional 4.4 1213 Interactive Voting System The Interactive Voting System (IVS ) is an interactive
KaleidaGraph Quick Start Guide
KaleidaGraph Quick Start Guide This document is a hands-on guide that walks you through the use of KaleidaGraph. You will probably want to print this guide and then start your exploration of the product.
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Reviewer s Guide. Morpheus Photo Animation Suite. Screenshots. Tutorial. Included in the Reviewer s Guide:
Morpheus Photo Animation Suite Reviewer s Guide The all-in-one animation suite includes Morpheus Photo Morpher, Morpheus Photo Warper, Morpheus Photo Mixer, as well as all 15 sample morphs, warps, and
10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
MAS 500 Intelligence Tips and Tricks Booklet Vol. 1
MAS 500 Intelligence Tips and Tricks Booklet Vol. 1 1 Contents Accessing the Sage MAS Intelligence Reports... 3 Copying, Pasting and Renaming Reports... 4 To create a new report from an existing report...
How To Run A Factory I/O On A Microsoft Gpu 2.5 (Sdk) On A Computer Or Microsoft Powerbook 2.3 (Powerpoint) On An Android Computer Or Macbook 2 (Powerstation) On
User Guide November 19, 2014 Contents 3 Welcome 3 What Is FACTORY I/O 3 How Does It Work 4 I/O Drivers: Connecting To External Technologies 5 System Requirements 6 Run Mode And Edit Mode 7 Controls 8 Cameras
NiceLabel Designer Standard User Guide
NiceLabel Designer Standard User Guide English Edition Rev-1112 2012 Euro Plus d.o.o. All rights reserved. Euro Plus d.o.o. Poslovna cona A 2 SI-4208 Šenčur, Slovenia tel.: +386 4 280 50 00 fax: +386 4
JavaFX Session Agenda
JavaFX Session Agenda 1 Introduction RIA, JavaFX and why JavaFX 2 JavaFX Architecture and Framework 3 Getting Started with JavaFX 4 Examples for Layout, Control, FXML etc Current day users expect web user
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
Table of Contents. Introduction...9. Installation...17. Program Tour...31. The Program Components...10 Main Program Features...11
2011 AdRem Software, Inc. This document is written by AdRem Software and represents the views and opinions of AdRem Software regarding its content, as of the date the document was issued. The information
CONTENTM WEBSITE MANAGEMENT SYSTEM. Getting Started Guide
CONTENTM WEBSITE MANAGEMENT SYSTEM Getting Started Guide Table of Contents CONTENTM WEBSITE MANAGEMENT SYSTEM... 1 GETTING TO KNOW YOUR SITE...5 PAGE STRUCTURE...5 Templates...5 Menus...5 Content Areas...5
Data Tool Platform SQL Development Tools
Data Tool Platform SQL Development Tools ekapner Contents Setting SQL Development Preferences...5 Execution Plan View Options Preferences...5 General Preferences...5 Label Decorations Preferences...6
Software User's Guide
Software User's Guide Brother QL-series The contents of this guide and the specifications of this product are subject to change without notice. Brother reserves the right to make changes without notice
SHARP Digital Signage Software Pro PN-SS05 OPERATION MANUAL
SHARP Digital Signage Software Pro PN-SS05 Version 4.1 OPERATION MANUAL Contents Introduction... 2 Precautions on Use...2 Trademarks...2 How to Read this Manual...3 Definitions...3 Installing/Launching...
Enterprise Interface User Guide
Enterprise Interface User Guide http://www.scientia.com Email: [email protected] Ref: 3094 ISO 9001:2000 / TickIT certified Copyright Scientia Ltd 2010 This document is the exclusive property of Scientia
Getting Started with Vision 6
Getting Started with Vision 6 Version 6.9 Notice Copyright 1981-2009 Netop Business Solutions A/S. All Rights Reserved. Portions used under license from third parties. Please send any comments to: Netop
Intro to Excel spreadsheets
Intro to Excel spreadsheets What are the objectives of this document? The objectives of document are: 1. Familiarize you with what a spreadsheet is, how it works, and what its capabilities are; 2. Using
FastTrack Schedule 10. Tutorials Manual. Copyright 2010, AEC Software, Inc. All rights reserved.
FastTrack Schedule 10 Tutorials Manual FastTrack Schedule Documentation Version 10.0.0 by Carol S. Williamson AEC Software, Inc. With FastTrack Schedule 10, the new version of the award-winning project
vtcommander Installing and Starting vtcommander
vtcommander vtcommander provides a local graphical user interface (GUI) to manage Hyper-V R2 server. It supports Hyper-V technology on full and core installations of Windows Server 2008 R2 as well as on
Simply Accounting Intelligence Tips and Tricks Booklet Vol. 1
Simply Accounting Intelligence Tips and Tricks Booklet Vol. 1 1 Contents Accessing the SAI reports... 3 Running, Copying and Pasting reports... 4 Creating and linking a report... 5 Auto e-mailing reports...
THE CERN/SL XDATAVIEWER: AN INTERACTIVE GRAPHICAL TOOL FOR DATA VISUALIZATION AND EDITING
THE CERN/SL XDATAVIEWER: AN INTERACTIVE GRAPHICAL TOOL FOR DATA VISUALIZATION AND EDITING Abstract G. Morpurgo, CERN As a result of many years of successive refinements, the CERN/SL Xdataviewer tool has
Timeless Time and Expense Version 3.0. Copyright 1997-2009 MAG Softwrx, Inc.
Timeless Time and Expense Version 3.0 Timeless Time and Expense All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or mechanical, including
INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL...
INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 CONTROL PANEL... 4 ADDING GROUPS... 6 APPEARANCE... 7 BANNER URL:... 7 NAVIGATION... 8
Contents. Launching FrontPage... 3. Working with the FrontPage Interface... 3 View Options... 4 The Folders List... 5 The Page View Frame...
Using Microsoft Office 2003 Introduction to FrontPage Handout INFORMATION TECHNOLOGY SERVICES California State University, Los Angeles Version 1.0 Fall 2005 Contents Launching FrontPage... 3 Working with
Sweet Home 3D user's guide
1 de 14 08/01/2013 13:08 Features Download Online Gallery Blog Documentation FAQ User's guide Video tutorial Developer's guides History Reviews Support 3D models Textures Translations Forum Report a bug
DataPA OpenAnalytics End User Training
DataPA OpenAnalytics End User Training DataPA End User Training Lesson 1 Course Overview DataPA Chapter 1 Course Overview Introduction This course covers the skills required to use DataPA OpenAnalytics
Web Dashboard User Guide
Web Dashboard User Guide Version 10.2 The software supplied with this document is the property of RadView Software and is furnished under a licensing agreement. Neither the software nor this document may
Interacting with Users
7 Interacting with Users 7 Apple Remote Desktop is a powerful tool for interacting with computer users across a network. You can interact by controlling or observing remote screens, text messaging with
Printing Guide. MapInfo Pro Version 15.0. Contents:
MapInfo Pro Version 15.0 The purpose of this guide is to assist you in getting the best possible output from your MapInfo Pro software. We begin by covering the new print, import, and export features and
Gladinet Cloud Backup V3.0 User Guide
Gladinet Cloud Backup V3.0 User Guide Foreword The Gladinet User Guide gives step-by-step instructions for end users. Revision History Gladinet User Guide Date Description Version 8/20/2010 Draft Gladinet
Table Of Contents. iii
PASSOLO Handbook Table Of Contents General... 1 Content Overview... 1 Typographic Conventions... 2 First Steps... 3 First steps... 3 The Welcome dialog... 3 User login... 4 PASSOLO Projects... 5 Overview...
How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip
Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided
Cross-platform C++ development using Qt
Cross-platform C++ development using Qt Fall 2005 QT Presentation By Gabe Rudy Overview About Trolltech /QT Qt Features and Benefits Examples and Code Demos and more Code! Questions About Trolltech/QT
Appointment Scheduler
EZClaim Appointment Scheduler User Guide Last Update: 11/19/2008 Copyright 2008 EZClaim This page intentionally left blank Contents Contents... iii Getting Started... 5 System Requirements... 5 Installing
SiteBuilder 2.1 Manual
SiteBuilder 2.1 Manual Copyright 2004 Yahoo! Inc. All rights reserved. Yahoo! SiteBuilder About This Guide With Yahoo! SiteBuilder, you can build a great web site without even knowing HTML. If you can
1 ImageBrowser Software Guide
1 ImageBrowser Software Guide Table of Contents (1/2) Chapter 1 Try It! ImageBrowser Starting ImageBrowser -------------------------------------------------- 4 Importing Images to Your Computer ---------------------------------
4D Plugin SDK v11. Another minor change, real values on 10 bytes is no longer supported.
4D Plugin SDK v11 4D Plugin API 4D Plugin API v11 is a major upgrade of 4D Plugin API. The two major modifications are that it is now fully Unicode compliant, and that it gives support to the new 4D pictures.
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
PaperlessPrinter. Version 3.0. User s Manual
Version 3.0 User s Manual The User s Manual is Copyright 2003 RAREFIND ENGINEERING INNOVATIONS All Rights Reserved. 1 of 77 Table of Contents 1. 2. 3. 4. 5. Overview...3 Introduction...3 Installation...4
Google Docs Basics Website: http://etc.usf.edu/te/
Website: http://etc.usf.edu/te/ Google Docs is a free web-based office suite that allows you to store documents online so you can access them from any computer with an internet connection. With Google
NETWORK PRINT MONITOR User Guide
NETWORK PRINT MONITOR User Guide Legal Notes Unauthorized reproduction of all or part of this guide is prohibited. The information in this guide is subject to change without notice. We cannot be held liable
Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.
Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures
OPERATION MANUAL. MV-410RGB Layout Editor. Version 2.1- higher
OPERATION MANUAL MV-410RGB Layout Editor Version 2.1- higher Table of Contents 1. Setup... 1 1-1. Overview... 1 1-2. System Requirements... 1 1-3. Operation Flow... 1 1-4. Installing MV-410RGB Layout
Exclaimer Mail Archiver User Manual
User Manual www.exclaimer.com Contents GETTING STARTED... 8 Mail Archiver Overview... 9 Exchange Journaling... 9 Archive Stores... 9 Archiving Policies... 10 Search... 10 Managing Archived Messages...
Acrobat X Pro Accessible Forms and Interactive Documents
Contents 2 PDF Form Fields 2 Acrobat Form Wizard 5 Enter Forms Editing Mode Directly 5 Create Form Fields Manually 6 Forms Editing Mode 8 Form Field Properties 11 Editing or Modifying an Existing Form
Introduction To Microsoft Office PowerPoint 2007. Bob Booth July 2008 AP-PPT5
Introduction To Microsoft Office PowerPoint 2007. Bob Booth July 2008 AP-PPT5 University of Sheffield Contents 1. INTRODUCTION... 3 2. GETTING STARTED... 4 2.1 STARTING POWERPOINT... 4 3. THE USER INTERFACE...
Using Adobe Dreamweaver CS4 (10.0)
Getting Started Before you begin create a folder on your desktop called DreamweaverTraining This is where you will save your pages. Inside of the DreamweaverTraining folder, create another folder called
Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick Reference Guide
Open Crystal Reports From the Windows Start menu choose Programs and then Crystal Reports. Creating a Blank Report Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick
OPTAC Fleet Viewer. Instruction Manual
OPTAC Fleet Viewer Instruction Manual Stoneridge Limited Claverhouse Industrial Park Dundee DD4 9UB Help-line Telephone Number: 0870 887 9256 E-Mail: [email protected] Document version 4.0 Part Number:
MICROSOFT OFFICE ACCESS 2007 - NEW FEATURES
MICROSOFT OFFICE 2007 MICROSOFT OFFICE ACCESS 2007 - NEW FEATURES Exploring Access Creating and Working with Tables Finding and Filtering Data Working with Queries and Recordsets Working with Forms Working
Using the Query Analyzer
Using the Query Analyzer Using the Query Analyzer Objectives Explore the Query Analyzer user interface. Learn how to use the menu items and toolbars to work with SQL Server data and objects. Use object
Asset Track Getting Started Guide. An Introduction to Asset Track
Asset Track Getting Started Guide An Introduction to Asset Track Contents Introducing Asset Track... 3 Overview... 3 A Quick Start... 6 Quick Start Option 1... 6 Getting to Configuration... 7 Changing
AB-Clock. Manual. Copyright 1996-2004 by GRAHL software design
Manual Contents Contents Welcome! 4 4... The AB-Clock Menu 4... AB-Clock Settings 5... Start and Exit AB-Clock 5 Start AB-Clock... 5 Exit AB-Clock... 5 Start Parameters... 6 Procedures... 6 How to... run
Business Insight Report Authoring Getting Started Guide
Business Insight Report Authoring Getting Started Guide Version: 6.6 Written by: Product Documentation, R&D Date: February 2011 ImageNow and CaptureNow are registered trademarks of Perceptive Software,
VX Search File Search Solution. VX Search FILE SEARCH SOLUTION. User Manual. Version 8.2. Jan 2016. www.vxsearch.com [email protected]. Flexense Ltd.
VX Search FILE SEARCH SOLUTION User Manual Version 8.2 Jan 2016 www.vxsearch.com [email protected] 1 1 Product Overview...4 2 VX Search Product Versions...8 3 Using Desktop Product Versions...9 3.1 Product
Taboret Management Application Builder
Taboret Management Application Builder INTRODUCTION Management Application Builders allow network-knowledgeable people to build their own solutions to management problems. More important, these new tools
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey
Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences by Mike Dempsey Overview SQL Assistant 13.0 is an entirely new application that has been re-designed from the ground up. It has been
Custom Reporting System User Guide
Citibank Custom Reporting System User Guide April 2012 Version 8.1.1 Transaction Services Citibank Custom Reporting System User Guide Table of Contents Table of Contents User Guide Overview...2 Subscribe
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
S PT-E550W ELECTRONIC E C LABELING L SYSTEM
ELECTRONIC E C LABELING L SYSTEM S PT-E0W In order to use your P-touch labeling system safely, read the included Quick Setup Guide first. Read this guide before you start using your P-touch labeling system.
5nine Hyper-V Commander
5nine Hyper-V Commander 5nine Hyper-V Commander provides a local graphical user interface (GUI), and a Framework to manage Hyper-V R2 server and various functions such as Backup/DR, HA and P2V/V2V. It
MapInfo Professional Version 12.5. Printing Guide
MapInfo Professional Version 12.5 Printing Guide The purpose of this guide is to assist you in getting the best possible output from your MapInfo Professional software. We begin by covering the new print,
CaptainCasa. CaptainCasa Enterprise Client. CaptainCasa Enterprise Client. Feature Overview
Feature Overview Page 1 Technology Client Server Client-Server Communication Client Runtime Application Deployment Java Swing based (JRE 1.6), generic rich frontend client. HTML based thin frontend client
