9780132826457

Introduction to Design Patterns in C++ with Qt

by ;
  • ISBN13:

    9780132826457

  • ISBN10:

    0132826453

  • Edition: 2nd
  • Format: Hardcover
  • Copyright: 9/16/2011
  • Publisher: Prentice Hall
  • Purchase Benefits
  • Free Shipping On Orders Over $59!
    Your order must be $59 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $64.99 Save up to $9.75
  • Buy New
    $55.24

    CURRENTLY AVAILABLE, USUALLY SHIPS IN 24-48 HOURS

Supplemental Materials

What is included with this book?

  • The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
  • The eBook copy of this book is not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Summary

Master C++ "The Qt Way," with an emphasis on design patterns - and learn how to state-of-the-art cross-platform visual applications     A tutorial, reference guide, and textbook rolled into one: learn to write elegant cross-platform GUI applications that maximize code reuse Thoroughly updated to teach more design patterns and highly-efficient new techniques based on new Nokia Qt 4.7/4.6 classes Assumes no prior knowledge of C, C++, or objects: teaches best practices "from the ground up"     This fully updated book teaches C++ "The Qt way," with an emphasis on design patterns, and the efficient reuse of open source libraries and tools. You will master both the C++ language and Nokia Qt 4/7/4.6 libraries, as well the design patterns used in developing software with well defined layers of code and simple, reusable classes and functions. Every chapter of this Second Edition has been improved with new content, better organization, or both. Notably, you will find extensively revised coverage of Widgets, MainWindows, Models and Views, Databases, and Dynamic Forms. This edition adds coverage of the powerful new Qt Creator IDE; presents new multimedia development techniques; and offers extended coverage of Qt Designer. Reflecting extensive classroom feedback, this edition is restructured to allow you to begin writing simple applications sooner. By teaching file streams earlier, it also enables students to build more robust software more quickly. This edition introduces more design patterns, providing implementations or identifying Qt classes that rely on each. Many new quiz questions and labs have been added, and the text presents more efficient solutions that leverage Qt's 4.7/4.6's newest capabilities.

Author Biography

Alan 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.

Table of Contents

Foreword     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     709

Rewards Program

Write a Review