Technical Overview

Total Page:16

File Type:pdf, Size:1020Kb

Technical Overview Qt Cross-platform C++ GUI Application Framework Technical Overview v. 1.3 © 2000 Trolltech AS 1. Contents 1. Contents...................................................................................................................................................... 2 2. Introduction ................................................................................................................................................ 3 3. Architecture ................................................................................................................................................ 4 3.1. Cross-Platform Development .............................................................................................................. 4 3.2. API Layering ....................................................................................................................................... 5 3.3. Look and Feel ...................................................................................................................................... 6 3.4. Performance......................................................................................................................................... 7 3.5. Maintenance......................................................................................................................................... 7 3.6. API design ........................................................................................................................................... 7 3.7. Efficiency............................................................................................................................................. 8 3.8. Component Programming.................................................................................................................... 8 4. Internationalization................................................................................................................................... 10 4.1. Unicode.............................................................................................................................................. 10 4.2. Localization ....................................................................................................................................... 10 5. Graphical User Interfaces (GUI)............................................................................................................... 12 5.1. Basic Concepts .................................................................................................................................. 12 5.2. User Interface Composition............................................................................................................... 12 5.3. Layout Management .......................................................................................................................... 12 5.4. Customizing Widgets......................................................................................................................... 14 6. Visual Development ................................................................................................................................. 16 7. Graphics.................................................................................................................................................... 18 7.1. Device Independent Graphics............................................................................................................ 18 7.2. Special Paint Devices ........................................................................................................................ 18 7.3. The 2D Graphics API ........................................................................................................................ 18 7.4. Image Handling ................................................................................................................................. 19 7.5. Canvas ............................................................................................................................................... 20 7.6. 3D Graphics....................................................................................................................................... 20 8. Tool Classes.............................................................................................................................................. 22 8.1. Operating System Services ................................................................................................................ 22 8.2. Text Classes....................................................................................................................................... 23 8.3. Collection Classes.............................................................................................................................. 23 8.4. Network Classes ................................................................................................................................ 24 8.5. Threading........................................................................................................................................... 24 9. Appendix 1: Widget Set............................................................................................................................ 25 10. Ready-made Dialogs............................................................................................................................... 27 11. Appendix 2: Complete API Class List.................................................................................................... 28 Qt is a trademark of Trolltech AS. All other company and product names are trademarks or registered trademarks of their respective owners. Qt – A technical Overview Page 2 of 29 2. Introduction For many years software producers have been faced with the problem of how to target a market with such diverse operating and window systems. And there is no reason to think this situation is about to change. It is now clear that the early nineties’ rumors of the impending death of Unix were exaggerated. The current boom of Linux and its positioning as a competitor on the desktop ensure that the software market will continue to have many different platforms in the foreseeable future. A major challenge in targeting multiple platforms has been the cost of developing and maintaining an application for several different platforms. Because of the inherent differences among these platforms, the porting of an application to a new platform can involve costly redesign and reimplementation. Qt is a software development application framework that solves the most critical challenges of cross-platform application development and maintenance. The following presentation explains the principles software developers can use with Qt to create single-code applications for end-users on different platforms. Qt is produced by Trolltech. Qt has been marketed since 1995 and is now being used by such leading companies as HP, IBM, Intel, Siemens, Ericsson and Xerox. Qt widely used on Linux; in fact, it is the basis of the popular KDE desktop environment included in virtually every Linux distribution. Details of all the functionality Qt provides are outside the scope of this document. For further technical information we refer you to: • The Qt Reference Documentation. Latest version is available on-line at doc.trolltech.com. • Programming with Qt, by Matthias Kalle Dalheimer. O’Reilly, 1999. This book is available in several languages: English, Norwegian, French, Japanese, Korean, Portuguese and German. • Teach Yourself Qt Programming in 24 Hours, by Daniel Solin, SAMS, 2000 • KDE- und Qt-Programmierung, by Burkhard Lehner, Addison-Wesley Longman Verlag, 2000. Currently available only in German. An updated list of all available documentation is available on-line at www.trolltech.com/developer/literature. Qt is a continuously evolving toolkit. The following summarizes the main features of the current version of Qt, which is version 2.2. Further information about Qt is available at the Trolltech web site: www.trolltech.com Qt – A technical Overview Page 3 of 29 3. Architecture Qt is a cross-platform C++ application framework. It is implemented as a class library and provides a rich API (Application Programmer’s Interface) for application developers. Qt offers a wide spectrum of useful functionality but focuses mainly on the GUI (Graphical User Interface). Thus, for application developers Qt replaces Motif, MFC, and/or other GUI toolkits. 3.1. Cross-Platform Development Qt is cross-platform: the Qt class library is implemented for several different operating and window systems., and the API is identical for all platforms. This means that an application written with Qt on one platform can be made to run on another simply by recompiling it on the new platform and linking it with the Qt library for that platform. In fact, the Qt library is binary compatible on all supported Windows variants. Thus, with Qt, software producers can develop and maintain an application for multiple platforms by developing and maintaining a single application source code base. Qt is currently implemented for three main groups of operating systems: • Unix - including Linux, HP-UX, Sun Solaris, Digital Unix, SGI Irix, IBM AIX, SCO Unix, and several BSD variants. The Qt library is implemented using the X11 libraries and the X Window system. • Windows - including Windows 95, 98, NT and 2000. The Qt library is implemented using the Windows GDI API
Recommended publications
  • Porting a Window Manager from Xlib to XCB
    Porting a Window Manager from Xlib to XCB Arnaud Fontaine (08090091) 16 May 2008 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version pub- lished by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Contents List of figures i List of listings ii Introduction 1 1 Backgrounds and Motivations 2 2 X Window System (X11) 6 2.1 Introduction . .6 2.2 History . .6 2.3 X Window Protocol . .7 2.3.1 Introduction . .7 2.3.2 Protocol overview . .8 2.3.3 Identifiers of resources . 10 2.3.4 Atoms . 10 2.3.5 Windows . 12 2.3.6 Pixmaps . 14 2.3.7 Events . 14 2.3.8 Keyboard and pointer . 15 2.3.9 Extensions . 17 2.4 X protocol client libraries . 18 2.4.1 Xlib . 18 2.4.1.1 Introduction . 18 2.4.1.2 Data types and functions . 18 2.4.1.3 Pros . 19 2.4.1.4 Cons . 19 2.4.1.5 Example . 20 2.4.2 XCB . 20 2.4.2.1 Introduction . 20 2.4.2.2 Data types and functions . 21 2.4.2.3 xcb-util library . 22 2.4.2.4 Pros . 22 2.4.2.5 Cons . 23 2.4.2.6 Example . 23 2.4.3 Xlib/XCB round-trip performance comparison .
    [Show full text]
  • Gtk Drawing Area Example C
    Gtk Drawing Area Example C Abyssinian Cary always Indianised his examination if Amadeus is lowest or marshalling skywards. Ornithischian Rudd overruled, his deportation backscatters remilitarizing proud. Zodiacal Udale alkalizing: he repay his ceorl jazzily and observantly. End angle bracket iter to indicates data to c gtk drawing area Programming with gtkmm 3. You should only grab from gtk drawing area widget draws with either create. These programmatically hidden from the properties are put there are created and executable program that all gtk app into boxes, i am doing. This locus the 'traits' of the GtkDrawingArea widget are inherited to this class. GtkDrawingArea gtk-30 Valadoc. M cm else return cm m xm def drawself ctx area tops the egg. Gmcs pkggtk-sharp-20 rusrlibmono20MonoCairodll simplecs Here saying how we compile the example DrawingArea darea new. This source code of examples have thrown me at least we will create a button click to retrieve them into those who must be updated. How to integrate those header-only libraries and uses Catch as an example. We just ugly cast. The error comes from C I over no danger about tablet to drift this drawingrb. Useful for detriment to extract multiple copies of chair same dialog. For example if most have created a dialog box for entering some personal information you. Drawing operation draws the examples are the interior of. Application runs the example draws some way to be used for single cell renderer to this will execute it! This is prominent example in object-oriented behavior enforced in C by GTK. GtkDrawingArea getDrawingAreaStructbool transferOwnership false.
    [Show full text]
  • Writing Applications with GTK+ 1 Introduction
    + Writing Applications with GTK Owen Taylor April Introduction Graphical user interfaces have b ecome almost universally familiar However it may b e worth saying a few words ab out how graphical user interfaces work in Linux and X from the p oint of view of the programmer The X server is resp onsible for only the simplest op erations of drawing graphics and text on the screen and for keeping track of the users mouse and keyboard actions Pro grams communicate with the server via the Xlib library However programming applications in straight Xlib would b e a tremendous chore Since Xlib provides only basic drawing commands each application would have to provide their own co de to user interface elements such as buttons or menus Such user interface elemenets are called widgets To avoid such a lab orious job and to provide consistancy b etween dierent applications the normal practice is to use a to olkit a library that builds on top of Xlib and handles the details of the user interface The traditional choices for such a to olkit have b een two libraries built up on X Intrinsics libXt library distributed with X the Athena Widgets which are distributed with X and Mo 1 tif However Xt is complicated to learn and use the Athena Widgets havent lo oked stylish since and Motif while somewhat more up to date is large slow has an app earance disliked by many p eople and most imp ortantly is a proprietary pro duct without freely available source co de For these reasons and others much recent development has fo cused on to olk its that build directly
    [Show full text]
  • Fundamentals of Xlib Programming by Examples
    Fundamentals of Xlib Programming by Examples by Ross Maloney Contents 1 Introduction 1 1.1 Critic of the available literature . 1 1.2 The Place of the X Protocol . 1 1.3 X Window Programming gotchas . 2 2 Getting started 4 2.1 Basic Xlib programming steps . 5 2.2 Creating a single window . 5 2.2.1 Open connection to the server . 6 2.2.2 Top-level window . 7 2.2.3 Exercises . 10 2.3 Smallest Xlib program to produce a window . 10 2.3.1 Exercises . 10 2.4 A simple but useful X Window program . 11 2.4.1 Exercises . 12 2.5 A moving window . 12 2.5.1 Exercises . 15 2.6 Parts of windows can disappear from view . 16 2.6.1 Testing overlay services available from an X server . 17 2.6.2 Consequences of no server overlay services . 17 2.6.3 Exercises . 23 2.7 Changing a window’s properties . 23 2.8 Content summary . 25 3 Windows and events produce menus 26 3.1 Colour . 26 3.1.1 Exercises . 27 i CONTENTS 3.2 A button to click . 29 3.3 Events . 33 3.3.1 Exercises . 37 3.4 Menus . 37 3.4.1 Text labelled menu buttons . 38 3.4.2 Exercises . 43 3.5 Some events of the mouse . 44 3.6 A mouse behaviour application . 55 3.6.1 Exercises . 58 3.7 Implementing hierarchical menus . 58 3.7.1 Exercises . 67 3.8 Content summary . 67 4 Pixmaps 68 4.1 The pixmap resource .
    [Show full text]
  • FLTK 1.1.8 Programming Manual Revision 8
    FLTK 1.1.8 Programming Manual Revision 8 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2006 by Bill Spitzak and Others. FLTK 1.1.8 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • OCCT V.6.5.4 Release Notes
    Open CASCADE Technology & Products Products Version6. features, Highlights Technology CASCADE Open Overview , so applications linked against a previous version must berecompiled to run with this Version 6. Open CASCADE Technology & Products Technology Open CASCADE improvements and bug fixes over 6 Universal locale global current on independent made export / Import TKOpenGl libraries support plotter and viewer 2D obsolete of Removal Accelerated text visualization management texture of Redesign R and XCode Cocoa API with native visualization X, Mac OS On of support Official New automated testing system testing New automated and 3D graphics 2D both to way render unified the become input parameters and results and generation of data for bug rep bug for data of generation and results and parameters input . 0 efactored is binary incompatible withtheprevious versions CMake build scripts build CMake is nowis link Open CASCADE Open Boolean operations algorithm operations Boolean andProducts Mac OS X and Products Products and www. www. ed at build time, not at run time run at not time, build at ed opencascad Release Notes Notes Release opencascade M , Windows 8 and Visual Studio 2012 Studio Visual , and Windows 8 maintenance ; use of FTGL library is dropped FTGL of library ; use in version or e .co Release .org 6. m releas . Possibility to enable automatic check of of check automatic enable to Possibility . 6 . 0 ver. 6. ver. Technology is a Copyright © 2013 by OPEN CASCADE Page Copyright OPEN CASCADE 2013by © e 6. minor 5. 5 of . release, which includes 6 OpenCASCADE Technology . 0 4 project files files project ort . 3Dviewer over libraries 1 2 5 of 0 32 new 6 and and .
    [Show full text]
  • Pygtk GUI Programming Pygtk GUI Programming Table of Contents Pygtk GUI Programming
    PyGTK GUI programming PyGTK GUI programming Table of Contents PyGTK GUI programming...............................................................................................................................1 Chapter 1. Introduzione....................................................................................................................................2 1.1. Primo approccio...............................................................................................................................2 1.2. Il toolkit PyGTK..............................................................................................................................2 1.3. PyGTK e Glade................................................................................................................................2 1.4. IDE o editor......................................................................................................................................4 1.5. Installazione.....................................................................................................................................6 1.5.1. Installazione su piattaforma GNU/Linux...............................................................................6 1.5.2. Installazione su piattaforma Windows...................................................................................6 1.6. Supporto e help................................................................................................................................6 Chapter 2. I Widget, le classi ed un
    [Show full text]
  • Multiplatformní GUI Toolkity GTK+ a Qt
    Multiplatformní GUI toolkity GTK+ a Qt Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI GUI toolkit (widget toolkit) (1) = programová knihovna (nebo kolekce knihoven) implementující prvky GUI = widgety (tlačítka, seznamy, menu, posuvník, bary, dialog, okno atd.) a umožňující tvorbu GUI (grafického uživatelského rozhraní) aplikace vlastní jednotný nebo nativní (pro platformu/systém) vzhled widgetů, možnost stylování nízkoúrovňové (Xt a Xlib v X Windows System a libwayland ve Waylandu na unixových systémech, GDI Windows API, Quartz a Carbon v Apple Mac OS) a vysokoúrovňové (MFC, WTL, WPF a Windows Forms v MS Windows, Cocoa v Apple Mac OS X, Motif/Lesstif, Xaw a XForms na unixových systémech) multiplatformní = pro více platforem (MS Windows, GNU/Linux, Apple Mac OS X, mobilní) nebo platformově nezávislé (Java) – aplikace může být také (většinou) událostmi řízené programování (event-driven programming) – toolkit v hlavní smyčce zachytává události (uživatelské od myši nebo klávesnice, od časovače, systému, aplikace samotné atd.) a umožňuje implementaci vlastních obsluh (even handler, callback function), objektově orientované programování (objekty = widgety aj.) – nevyžaduje OO programovací jazyk! Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 1 / 10 GUI toolkit (widget toolkit) (2) language binding = API (aplikační programové rozhraní) toolkitu v jiném prog. jazyce než původní API a toolkit samotný GUI designer/builder = WYSIWYG nástroj pro tvorbu GUI s využitím toolkitu, hierarchicky skládáním prvků, z uloženého XML pak generuje kód nebo GUI vytvoří za běhu aplikace nekomerční (GNU (L)GPL, MIT, open source) i komerční licence např. GTK+ (C), Qt (C++), wxWidgets (C++), FLTK (C++), CEGUI (C++), Swing/JFC (Java), SWT (Java), JavaFX (Java), Tcl/Tk (Tcl), XUL (XML) aj.
    [Show full text]
  • Pygtk 2.0 Tutorial
    PyGTK 2.0 Tutorial John Finlay October 7, 2012 PyGTK 2.0 Tutorial by John Finlay Published March 2, 2006 ii Contents 1 Introduction 1 1.1 Exploring PyGTK . .2 2 Getting Started 5 2.1 Hello World in PyGTK . .7 2.2 Theory of Signals and Callbacks . .9 2.3 Events . 10 2.4 Stepping Through Hello World . 11 3 Moving On 15 3.1 More on Signal Handlers . 15 3.2 An Upgraded Hello World . 15 4 Packing Widgets 19 4.1 Theory of Packing Boxes . 19 4.2 Details of Boxes . 20 4.3 Packing Demonstration Program . 22 4.4 Packing Using Tables . 27 4.5 Table Packing Example . 28 5 Widget Overview 31 5.1 Widget Hierarchy . 31 5.2 Widgets Without Windows . 34 6 The Button Widget 35 6.1 Normal Buttons . 35 6.2 Toggle Buttons . 38 6.3 Check Buttons . 40 6.4 Radio Buttons . 42 7 Adjustments 45 7.1 Creating an Adjustment . 45 7.2 Using Adjustments the Easy Way . 45 7.3 Adjustment Internals . 46 8 Range Widgets 49 8.1 Scrollbar Widgets . 49 8.2 Scale Widgets . 49 8.2.1 Creating a Scale Widget . 49 8.2.2 Methods and Signals (well, methods, at least) . 50 8.3 Common Range Methods . 50 8.3.1 Setting the Update Policy . 50 8.3.2 Getting and Setting Adjustments . 51 8.4 Key and Mouse Bindings . 51 8.5 Range Widget Example . 51 9 Miscellaneous Widgets 57 9.1 Labels . 57 9.2 Arrows . 60 9.3 The Tooltips Object .
    [Show full text]
  • Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference
    USENIX Association Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference Monterey, California, USA June 10-15, 2002 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2002 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein. XCL : An Xlib Compatibility Layer For XCB Jamey Sharp Bart Massey Computer Science Department Portland State University Portland, Oregon USA 97207–0751 fjamey,[email protected] Abstract 1 The X Window System The X Window System [SG86] is the de facto standard technology for UNIX applications wishing to provide a graphical user interface. The power and success of the X model is due in no small measure to its separation of The X Window System has provided the standard graph- hardware control from application logic with a stable, ical user interface for UNIX systems for more than 15 published client-server network protocol. In this model, years. One result is a large installed base of X applica- the hardware controller is considered the server, and in- tions written in C and C++. In almost all cases, these dividual applications and other components of a com- programs rely on the Xlib library to manage their inter- plete desktop environment are clients.
    [Show full text]
  • Xlib − C Language X Interface X Window System Standard X Version 11, Release 6.7
    Xlib − C Language X Interface X Window System Standard X Version 11, Release 6.7 James Gettys Cambridge Research Laboratory Digital Equipment Corporation Robert W. Scheifler Laboratory for Computer Science Massachusetts Institute of Technology with contributions from Chuck Adams, Tektronix, Inc. Vania Joloboff, Open Software Foundation Hideki Hiura, Sun Microsystems, Inc. Bill McMahon, Hewlett-Packard Company Ron Newman, Massachusetts Institute of Technology Al Tabayoyon, Tektronix, Inc. Glenn Widener, Tektronix, Inc. Shigeru Yamada, Fujitsu OSSI The X Window System is a trademark of The Open Group. TekHVC is a trademark of Tektronix, Inc. Copyright © 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996, 2002 The Open Group Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documenta- tion files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Soft- ware. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTIC- ULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTH- ERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    [Show full text]
  • Extensibility in Gnustep & Étoilé
    Extensibility in GNUstep & Étoilé GNU Hackers 2011 http://www.gnustep.org http://www.etoileos.com jeudi 1 septembre 2011 Objective-C & GNUstep jeudi 1 septembre 2011 Objective-C • Created by Brad Cox and Tom Love in 1986 to package C libraries in Smalltalk-like classes • Comes with dynamic features such as • message forwarding • categories to extend existing classes • resolve methods lazily etc. jeudi 1 septembre 2011 Class Example @interface Person : NSObject - (void) sleep; @end @implementation - (void) sleep { NSLog(@“Zzzz!”); } @end jeudi 1 septembre 2011 Category Example @interface Person (Talktative) - (NSString *) talk; @end @implementation Person (Talktative) - (NSString *) talk { return @“poumpoumpidoum”; } @end jeudi 1 septembre 2011 Objective-C Runtime • No virtual machine, but a small runtime library • class_getSuperclass() • class_setSuperclass() • class_replaceMethod() • method_getArgumentType() etc. • Provides type infos for C types such as structs, unions, pointer etc. jeudi 1 septembre 2011 Class Transform • Dynamic implicit subclass creation • Many Use cases • Persistency (Fast Portable Orthogonally Persistent Java) • Change Notifications (Key Value Observing) • Prototypes (Google V8, libobjc2) • Faulting, State Machine, AOP etc. jeudi 1 septembre 2011 Composition of Class Transforms • Multiple transforms create several implicit subclasses… • Methods can be overriden several times • Composition order matters • How to be sure the resulting behavior is correct? • No well-known model to support composition jeudi 1 septembre
    [Show full text]