Foundations of Qt Development / Edition 1

Paperback (Print)
Buy New
Buy New from
Used and New from Other Sellers
Used and New from Other Sellers
from $23.76
Usually ships in 1-2 business days
(Save 56%)
Other sellers (Paperback)
  • All (11) from $23.76   
  • New (7) from $34.62   
  • Used (4) from $23.76   


As the standard for KDE desktop environment, Trolltech's Qt is a necessary basis for all programmers who want to develop cross-platform applications on Windows, Mac OS, Linux, and FreeBSD. A multitude of popular applications have been written in Qt, including Adobe Photoshop Elements, Google Earth, Perforce Visual Client, and Skype.

Foundations of Qt Development is based on Qt 4.2, and is aimed at C++ programmers who want to become proficient using this excellent toolkit to create graphical applications that can be ported to all major platforms. The book is focused on teaching you to write your own code in addition to using existing code. Common areas of confusion are identified, addressed, and answered.

Read More Show Less

Product Details

  • ISBN-13: 9781590598313
  • Publisher: Apress
  • Publication date: 8/23/2007
  • Series: Expert's Voice in Open Source Series
  • Edition number: 1
  • Pages: 528
  • Sales rank: 822,925
  • Product dimensions: 1.12 (w) x 9.25 (h) x 7.50 (d)

Meet the Author

Johan Thelin has worked with software development since 1995 and has experience ranging from embedded systems to server-side enterprise software. He started using Qt in 2000 and has loved using it ever since. Since 2002, he has provided the Qt community with tutorials, articles, and help (most notably, he wrote the "Independent Qt Tutorial"). He works as a consultant focusing on embedded systems, FPGA design, and software development.
Read More Show Less

Table of Contents

Foreword     xv
About the Author     xvii
About the Technical Reviewer     xix
Acknowledgments     xxi
Getting to Know Qt
The Qt Way of C++     3
Installing a Qt Development Environment     3
Installing on Unix Platforms     3
Installing on Windows     5
Making C++ "Qt-er"     6
Inheriting Qt     7
Using a Qt String     10
Building a Qt Program     11
Signals, Slots, and Meta-Objects     13
Making the Connection     16
Revisiting the Build Process     18
Connection to Something New     19
Collections and Iterators     21
Iterating the QList     21
Filling the List     24
More Lists     24
Special Lists     25
Summary     31
Rapid Application Development Using Qt     33
The Sketch     33
Event-Driven Applications     34
Using Designer     35
From Designer to Code     47
The Final Touches     53
Summary     54
Widgets and Layouts     55
Creating Dialogs inQt     55
Size Policies     57
Layouts     60
Common Widgets     62
QPushButton     62
QLabel     64
QLineEdit     65
QCheckBox     66
QRadioButton     67
QGroupBox     68
QListWidget     69
QComboBox     71
QSpinBox     72
QSlider     73
QProgressBar     74
Common Dialogs     75
Files     75
Messages     79
Even More Dialogs     85
Validating User Input     86
Validators     87
Summary     93
The Main Window     95
Windows and Documents     95
Single Document Interface     96
Multiple Document Interface     103
Comparing Single and Multiple Document Interfaces     111
Application Resources     112
Resource File     112
Project File     114
Application Icon     114
Dockable Widgets     115
Summary     119
The Qt Building Blocks
The Model-View Framework      123
Showing Data by Using Views     124
Providing Headers     127
Limiting Editing     127
Limiting Selection Behavior     127
A Single Column List     128
Creating Custom Views     129
A Delegate for Drawing     129
Custom Editing     132
Creating Your Own Views     135
Creating Custom Models     140
A Read-Only Table Model     141
A Tree of Your Own     144
Editing the Model     150
Sorting and Filtering Models     153
Summary     156
Creating Widgets     157
Composing Widgets     157
Changing and Enhancing Widgets     162
Catching the Events     164
Creating Custom Widgets from Scratch     171
Your Widgets and Designer     176
Promotion     176
Providing a Plugin     177
Summary     182
Drawing and Printing     183
Drawing Widgets     183
The Drawing Operations     184
Transforming the Reality     200
Painting Widgets     204
The Graphics View     215
Interacting Using a Custom Item     220
Printing     228
OpenGL     232
Summary     232
Files, Streams, and XML     235
Working with Paths     235
Working with Files     238
Working with Streams     239
XML     243
DOM     244
Reading XML Files with SAX     248
Files and the Main Window     250
Summary     255
Providing Help     257
Creating Tooltips     257
Creating HTML-Formatted Tooltips     259
Inserting Images into Tooltips     260
Applying Multiple Tooltips to a Widget     260
Providing What's This Help Tips     263
Embedding Links into What's This Help Tips     264
Taking Advantage of the Status Bar     267
Creating Wizards     269
Assisting the User     275
Creating the Help Documentation     275
Putting It Together     277
Summary     278
Internationalization and Localization     279
Translating an Application     279
Extracting the Strings     281
Linguist: A Tool for Translating      281
Set Up a Translation Object     284
Qt Strings     285
Dealing with Other Translation Cases     287
Find the Missing Strings     291
Translating on the Fly     292
Other Considerations     295
Dealing with Text     295
Images     296
Numbers     296
Dates and Times     298
Help     301
Summary     301
Plugins     303
Plugin Basics     303
Extending Qt with Plugins     304
Creating an ASCII Art Plugin     304
Extending Your Application Using Plugins     317
Filtering Images     317
Merging the Plugin and the Application     323
A Factory Interface     326
Non-Qt Plugins     329
Summary     332
Doing Things in Parallel     333
Basic Threading     333
Building a Simple Threading Application     334
Synchronizing Safely     336
Protecting Your Data     338
Protected Counting     339
Locking for Reading and Writing     341
Sharing Resources Among Threads     344
Getting Stuck     345
Producers and Consumers     347
Signaling Across the Thread Barrier     352
Passing Strings Between Threads     353
Sending Your Own Types Between Threads     356
Threads, QObjects, and Rules     359
Pitfalls when Threading     359
The User Interface Thread     360
Working with Processes     363
Running uic     363
The Shell and Directions     368
Summary     368
Databases     371
A Quick Introduction to SQL     371
What Is a Database?     371
Inserting, Viewing, Modifying, and Deleting Data     372
More Tables Mean More Power     375
Counting and Calculating     377
Qt and Databases     378
Making the Connection     378
Querying Data     380
Establishing Several Connections     382
Putting It All Together     382
The Structure of the Application     384
The User Interface     384
The Database Class     392
Putting Everything Together     397
Model Databases     398
The Query Model      399
The Table Model     399
The Relational Table Model     400
Summary     402
Networking     403
Using the QtNetwork Module     403
Working with Client Protocols     403
Creating an FTP Client     404
Creating an HTTP Client     417
Sockets     424
Reliability's Role with UDP and TCP     424
Servers, Clients, and Peers     425
Sending Images Using TCP     425
Broadcasting Pictures Using UDP     436
Summary     443
Building Qt Projects     445
QMake     445
The QMake Project File     445
Working with Different Platforms     450
Building Libraries with QMake     453
Building Complex Projects with QMake     454
The CMake Build System     457
Managing a Simple Application with QMake     457
Working with Different Platforms     461
Building Libraries with CMake     465
Managing Complex Projects with CMake     466
Summary     469
Unit Testing     471
Unit Testing and Qt     472
The Structure of a Test      472
Testing Dates     474
Implementing the Tests     475
Data-Driven Testing     479
Testing Widgets     483
Testing a Spin Box     483
Driving Widgets with Data     487
Testing Signals     490
Testing for Real     491
The Interface     492
The Tests     492
Handling Deviations     497
Summary     497
Third-Party Tools     501
Qt Widgets for Technical Applications: Qwt     502
wwWidgets     503
QDevelop     504
Edyuk     505
Containers, Types, and Macros     507
Containers     507
Sequences     507
Specialized Containers     508
Associative Containers     509
Types     509
Types by Size     509
The Variant Type     510
Macros and Functions     511
Treating Values     511
Random Values     511
Iterating     512
Index     513
Read More Show Less

Customer Reviews

Average Rating 2.5
( 4 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted July 16, 2011

    No text was provided for this review.

Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)