|
![]() |
|||
|
||||
Overview"This book fills a void between the many syntax-oriented programming texts that teach readers how to program in C++ with standard I/O (e.g., Deitel) and the relatively few books that assume a knowledge of OOP/C++ and emphasize GUI programming using higher-level frameworks (e.g., Blanchette). There are plenty of books on C++ programming but, with few exceptions, the user interface is constrained to either primitive terminal I/O, or closed-source, non-portable libraries (e.g., Microsoft Foundation Classes). This book makes extensive use of Nokia’s excellent Qt system.Originally developed by Trolltech, ""Qt is a cross-platform C++ application framework developers can use to write single-source applications that run natively on Windows, Linux, Unix, Mac OS X and embedded Linux. Qt has been used to build thousands of successful commercial applications worldwide, and is the basis of the open source KDE desktop environment."" Most Linux distributions include a non-commercial version of Qt. In addition Qt is the basis for the standard Linux desktop, KDE and is used by more than an estimated 150,000 open source developers worldwide. " Full Product DetailsAuthor: Alan Ezust , Paul EzustPublisher: Pearson Education (US) Imprint: Prentice Hall Edition: 2nd edition Dimensions: Width: 18.20cm , Height: 4.40cm , Length: 23.80cm Weight: 1.358kg ISBN: 9780132826457ISBN 10: 0132826453 Pages: 768 Publication Date: 29 September 2011 Audience: Professional and scholarly , Professional & Vocational Format: Hardback Publisher's Status: Out of Print Availability: In Print ![]() Limited stock is available. It will be ordered for you and shipped pending supplier's limited stock. Table of ContentsForeword xv Preface xix Preface to the Second Edition xxii Acknowledgments xxv About the Authors xxx Part I: Design Patterns and Qt 4 1 Chapter 1: C++ Introduction 3 1.1 Overview of C++ 3 1.2 A Brief History of C++ 4 1.3 C++ First Example 5 1.4 Standard Input and Output 8 1.5 Introduction to Functions 11 1.6 qmake, Project Files, and Makefile 17 1.7 Getting Help Online 24 1.8 Strings 24 1.9 Streams 26 1.10 File Streams 29 1.11 Qt Dialogs for User Input/Output 34 1.12 Identifiers, Types, and Literals 37 1.13 C++ Simple Types 40 1.14 The Keyword const 52 1.15 Pointers and Memory Access 54 1.16 Reference Variables 60 1.17 const* and *const 61 1.18 Review Questions 64 Chapter 2: Top of the class 67 2.1 First, There Was struct 67 2.2 Class Definitions 69 2.3 Member Access Specifiers 71 2.4 Encapsulation 74 2.5 Introduction to UML 75 2.6 Friends of a Class 76 2.7 Constructors 77 2.8 Destructors 80 2.9 The Keyword static 81 2.10 Class Declarations and Definitions 86 2.11 Copy Constructors and Assignment Operators 88 2.12 Conversions 92 2.13 const Member Functions 95 2.14 Subobjects 97 2.15 Exercise: Classes 98 2.16 Review Questions 108 Chapter 3: Introduction to Qt 113 3.1 Style Guidelines, Naming Conventions 114 3.2 The Qt Core Module 116 3.3 QtCreator—An IDE for Qt Programming 119 3.4 Exercises: Introduction to Qt 120 3.5 Review Questions 121 Chapter 4: Lists 122 4.1 Introduction to Containers 122 4.2 Iterators 123 4.3 Relationships 129 4.4 Exercise: Relationships 132 4.5 Review Questions 134 Chapter 5: Functions 135 5.1 Overloading Functions 135 5.2 Optional Arguments 138 5.3 Operator Overloading 141 5.4 Parameter Passing by Value 146 5.5 Parameter Passing by Reference 148 5.6 References to const 152 5.7 Function Return Values 154 5.8 Returning References from Functions 154 5.9 Overloading on const 155 5.10 inline Functions 158 5.11 Functions with Variable-Length Argument Lists 162 5.12 Exercise: Encryption 164 5.13 Review Questions 167 Chapter 6: Inheritance and Polymorphism 168 6.1 Simple Derivation 168 6.2 Derivation with Polymorphism 177 6.3 Derivation from an Abstract Base Class 184 6.4 Inheritance Design 189 6.5 Overloading, Hiding, and Overriding 191 6.6 Constructors, Destructors, and Copy Assignment Operators 193 6.7 Processing Command-Line Arguments 198 6.8 Containers 204 6.9 Managed Containers, Composites, and Aggregates 206 6.10 Containers of Pointers 210 6.11 Review Questions 228 Chapter 7: Libraries and Design Patterns 234 7.1 Building and Reusing Libraries 236 7.2 Exercise: Installing Libraries 244 7.3 Frameworks and Components 247 7.4 Design Patterns 248 7.5 Review Questions 257 Chapter 8: QObject, QApplication, Signals, and Slots 259 8.1 Values and Objects 263 8.2 Composite Pattern: Parents and Children 264 8.3 QApplication and the Event Loop 272 8.4 Q_OBJECT and moc: A checklist 274 8.5 Signals and Slots 275 8.6 QObject Lifecycle 277 8.7 QTestLib 277 8.8 Exercises: QObject, QApplication, Signals, and Slots 282 8.9 Review Questions 282 Chapter 9: Widgets and Designer 283 9.1 Widget Categories 284 9.2 Designer Introduction 286 9.3 Dialogs 290 9.4 Form Layout 292 9.5 Icons, Images, and Resources 295 9.6 Layout of Widgets 298 9.7 Designer Integration with Code 306 9.8 Exercise: Input Forms 313 9.9 The Event Loop: Revisited 314 9.10 Paint Events, Drawing Images 323 9.11 Review Questions 325 Chapter 10: Main Windows and Actions 326 10.1 QActions, QMenus, and QMenuBars 327 10.2 Regions and QDockWidgets 337 10.3 QSettings: Saving and Restoring Application State 339 10.4 Clipboard and Data Transfer Operations 341 10.5 The Command Pattern 343 10.6 tr() and Internationalization 351 10.7 Exercises: Main Windows and Actions 352 10.8 Review Questions 353 Chapter 11: Generics and Containers 355 11.1 Generics and Templates 355 11.2 Generics, Algorithms, and Operators 362 11.3 Sorted Map Example 365 11.4 Function Pointers and Functors 368 11.5 Flyweight Pattern: Implicitly Shared Classes 371 11.6 Exercise: Generics 375 11.7 Review Questions 376 Chapter 12: Meta Objects, Properties, and Reflective Programming 378 12.1 QMetaObject—The MetaObject Pattern 378 12.2 Type Identification and qobject_cast 380 12.3 Q_PROPERTY Macro—Describing QObject Properties 383 12.4 QVariant Class: Accessing Properties 386 12.5 Dynamic Properties 389 12.6 MetaTypes, Declaring, and Registering 394 12.7 invokeMethod() 396 12.8 Exercises: Reflection 397 12.9 Review Questions 397 Chapter 13: Models and Views 399 13.1 Model-View-Controller (MVC) 400 13.2 Qt Models and Views 402 13.3 Table Models 414 13.4 Tree Models 424 13.5 Smarter Pointers 429 13.6 Exercises: Models and Views 431 13.7 Review Questions 433 Chapter 14: Validation and Regular Expressions 434 14.1 Input Masks 435 14.2 Validators 438 14.3 Regular Expressions 440 14.4 Regular Expression Validation 449 14.5 Subclassing QValidator 451 14.6 Exercises: Validation and Regular Expressions 454 14.7 Review Questions 456 Chapter 15: Parsing XML 457 15.1 The Qt XML Parsers 460 15.2 SAX Parsing 462 15.3 XML, Tree Structures, and DOM 466 15.4 XML Streams 476 15.5 Review Questions 479 Chapter 16: More Design Patterns 481 16.1 Creational Patterns 481 16.2 Memento Pattern 491 16.3 Façade Pattern 498 16.4 Review Questions 505 Chapter 17: Concurrency 506 17.1 QProcess and Process Control 506 17.2 QThread and QtConcurrent 522 17.3 Exercises: QThread and QtConcurrent 536 17.4 Review Questions 537 Chapter 18: Database Programming 539 18.1 QSqlDatabase: Connecting to SQL from Qt 541 18.2 Queries and Result Sets 546 18.3 Database Models 548 18.4 Review Questions 549 Part II: C++ Language Reference 550 Chapter 19: Types and Expressions 552 19.1 Operators 553 19.2 Statements and Control Structures 557 19.3 Evaluation of Logical Expressions 564 19.4 Enumerations 565 19.5 Signed and Unsigned Integral Types 567 19.6 Standard Expression Conversions 570 19.7 Explicit Conversions 574 19.8 Safer Typecasting Using ANSI C++ Typecasts 574 19.9 Overloading Special Operators 581 19.10 Runtime Type Identification 587 19.11 Member Selection Operators 590 19.12 Exercises: Types and Expressions 592 19.13 Review Questions 594 Chapter 20: Scope and Storage Class 595 20.1 Declarations and Definitions 595 20.2 Identifier Scope 597 20.3 Storage Class 606 20.4 Namespaces 610 20.5 Review Questions 615 Chapter 21: Memory Access 617 21.1 Pointer Pathology 618 21.2 Further Pointer Pathology with Heap Memory 620 21.3 Memory Access Summary 623 21.4 Introduction to Arrays 624 21.5 Pointer Arithmetic 626 21.6 Arrays, Functions, and Return Values 627 21.7 Different Kinds of Arrays 629 21.8 Valid Pointer Operations 629 21.9 Arrays and Memory: Important Points 632 21.10 Exercises: Memory Access 633 21.11 Review Questions 634 Chapter 22: Inheritance in Detail 635 22.1 virtual Pointers, virtual Tables 635 22.2 Polymorphism and virtual Destructors 638 22.3 Multiple Inheritance 642 22.4 public, protected, and private Derivation 650 22.5 Review Questions 652 Part III: Programming Assignments 653 Chapter 23: MP3 Jukebox Assignments 655 23.1 Phonon/MultiMediaKit Setup 657 23.2 Playlist 657 23.3 Playlists 658 23.4 Source Selector 659 23.5 Database Playlists 661 23.6 Star Delegates 661 23.7 Sorting, Filtering, and Editing Playlists 661 Appendix A: C++ Reserved Keywords 662 Appendix B: Standard Headers 664 Appendix C: Development Tools 666 Appendix D: Alan’s Quick Start Guide to Debian for Programmers 691 Appendix E: C++/Qt Setup 698 Bibliography 706 Index 709ReviewsAuthor InformationAlan Ezust received his M.Sc in computer science from McGill University in Montreal. He currently works as a Nokia Certifi ed Qt Specialist for ICS (www.ics.com), a company that specializes in delivering training and professional services onQt software. He honed his teaching and courseware development skills at Learnix, and later at Objectivity, where he taught and/or wrote courses in Python, UNIX, C, C++, Java, Perl, Design Patterns, Froglogic Squish, and Object Oriented Databases. He lives in Victoria, BC, Canada. Paul Ezust (Cambridge, Massachusetts) chaired Suffolk University’s Department of Mathematics and Computer Science for more than 30 years, leading development of computer science curricula based on Association for Computing Machinery guidelines. He has done extensive outside consulting, contract programming, and research in computational mathematics. Tab Content 6Author Website:Countries AvailableAll regions |