Movatterモバイル変換


[0]ホーム

URL:


Packt
Search iconClose icon
Search icon CANCEL
Subscription
0
Cart icon
Your Cart(0 item)
Close icon
You have no products in your basket yet
Save more on your purchases!discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Profile icon
Account
Close icon

Change country

Modal Close icon
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timerSALE ENDS IN
0Days
:
00Hours
:
00Minutes
:
00Seconds
Home> Programming> GUI Application Development> Qt 6 C++ GUI Programming Cookbook
Qt 6 C++ GUI Programming Cookbook
Qt 6 C++ GUI Programming Cookbook

Qt 6 C++ GUI Programming Cookbook: Practical recipes for building cross-platform GUI applications, widgets, and animations with Qt 6 , Third Edition

Arrow left icon
Profile Icon Eng
Arrow right icon
€24.99€27.99
Full star iconFull star iconFull star iconFull star iconFull star icon5(7 Ratings)
eBookApr 2024428 pages3rd Edition
eBook
€24.99 €27.99
Paperback
€34.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€24.99 €27.99
Paperback
€34.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning
OR

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Table of content iconView table of contentsPreview book icon Preview Book

Qt 6 C++ GUI Programming Cookbook

Event Handling – Signals and Slots

The signals and slots mechanism in Qt 6 is one of its most important features. It’s a method that allows communication between objects, which is a crucial part of a program’s graphical user interface. A signal can be emitted from anyQObject object or its subclasses, which will then trigger any slot functions of any objects that are connected tothe signal.

In this chapter, we’re going to cover the followingmain topics:

  • Signals and slots ina nutshell
  • UI events with signalsand slots
  • Asynchronous programmingmade easier
  • Function callbacks

Technical requirements

The technical requirements for this chapter includeQt 6.6.1 MinGW 64-bit andQt Creator 12.0.2. All the code used in this chapter can be downloaded from the following GitHubrepository:https://github.com/PacktPublishing/QT6-C-GUI-Programming-Cookbook---Third-Edition-/tree/main/Chapter02.

Signals and slots in a nutshell

Compared tocallbacks (which Qt 6 also supports), thesignals and slots mechanism is comparably more fluid and flexible for theprogrammer to use. It is both type-safe and not strongly coupled to the processing function, which makes it better thancallback implementation.

How to do it…

Let’s get started by followingthese steps:

  1. Let’s create aQt Widgets Application project and openupmainwindow.ui.
  2. Drag and drop aPushButton widget from theWidget Box to theUI canvas:
Figure 2.1 – Dragging and dropping a push button to the UI canvas

Figure 2.1 – Dragging and dropping a push button to the UI canvas

  1. Right-click on thePushButton widgetand selectGo to slot. A windowwill appear:
Figure 2.2 – Selecting the clicked() signal and pressing OK

Figure 2.2 – Selecting the clicked() signal and pressing OK

  1. You will see a list of built-in slot functions available for the push button. Let’s select theclicked() option and pressOK. A slot function...

UI events with signals and slots

In the previous recipe, wedemonstrated the use of signals and slots on apush button. Now, let’s explore the signals and slots that are available in other commonwidget types.

How to do it…

To learn how to use signals and slots with UI events, followthese steps:

  1. Let’s create a newQt WidgetsApplication project.
  2. Drag and drop aPushButton,Combo Box,Line Edit,Spin Box, andSlider widget from theWidget Box into yourUI canvas:
Figure 2.6 – Placing several widgets on the UI canvas

Figure 2.6 – Placing several widgets on the UI canvas

  1. Then, right-click on the push button, selectclicked(), and press theOK button to proceed. A slot function will be created for you byQt Creator:
Figure 2.7 – Selecting the clicked() signal and pressing OK

Figure 2.7 – Selecting the clicked() signal and pressing OK

  1. Repeat the previous step, but this time, select the next selection until every function inQAbstractButton has been added to thesource...

Asynchronous programming made easier

Since the signals and slots mechanism isasynchronous in nature, we can make use of it for things other than user interfaces. In programming terms, anasynchronous operation is a process that works independently, allowing the program to continue its operation without waiting for theprocess to complete, which may stall the whole program. Qt 6 allows you to make use of its signals and slots mechanism to easily achieve asynchronous processes without much effort. This is even more true after Qt 6 enforced the new syntax for signals and slots, which allows a signal to trigger a normal function instead of a slot function from aQobject object.

In the following example, we will further explore this opportunity and learn how we can improve our program’s efficiency by using asynchronous operations through the signals and slots mechanism that’s provided byQt 6.

How to do it…

To learn how to achieve asynchronous operations using...

Function callbacks

Even though Qt 6 supports the signals and slots mechanism, some of the features in Qt 6 still usefunction callbacks, such as keyboard input, window resizing, graphics painting, and others. Since these events only need to be implemented once, there is no need to use the signals andslots mechanism.

How to do it…

Let’s get started by followingthis example:

  1. Create aQt Widgets Application project, open upmainwindow.h, and add thefollowing headers:
    #include <QDebug>#include <QResizeEvent>#include <QKeyEvent>#include <QMouseEvent>
  2. Then, declare these functionsinmainwindow.h:
    public:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    void resizeEvent(QResizeEvent *event);    void keyPressEvent(QKeyEvent *event);    void keyReleaseEvent(QKeyEvent *event);    void mouseMoveEvent...
Left arrow icon

Page1 of 6

Right arrow icon
Download code iconDownload Code

Key benefits

  • Learn to use Qt 6 to design and customize the look and feel of your applications
  • Improve the visual quality of an application by using graphics rendering and animation
  • Understand the balance of presentation and web content that will make an application appealing yet functional
  • Purchase of the print or Kindle book includes a free PDF eBook

Description

With the growing need to develop GUIs for multiple targets and multiple screens, improving the visual quality of your application has become pivotal in helping it stand out from your competitors. With its cross-platform ability and the latest UI paradigms, Qt makes it possible to build intuitive, interactive, and user-friendly UIs for your applications.The third edition of Qt 6 C++ GUI Programming Cookbook teaches you how to develop functional and appealing UIs using the latest version of Qt 6 and C++. This book will help you learn a variety of topics such as GUI customization and animation, graphics rendering, and implementing Google Maps. You’ll also be taken through advanced concepts such as asynchronous programming, event handling using signals and slots, network programming, and other aspects to optimize your application.By the end of this Qt book, you’ll have the confidence you need to design and customize GUI applications that meet your clients' expectations and have an understanding of best-practice solutions to common problems during the app development process.

Who is this book for?

This intermediate-level book is designed for those who want to develop software using Qt 6. If you want to improve the visual quality and content presentation of your software application, this book is for you. Prior experience with the C++ programming language is required.

What you will learn

  • Animate GUI elements using Qt 6's built-in animation system
  • Draw vector shapes and bitmap images using Qt 6's powerful rendering system
  • Implement an industry-standard OpenGL library in your project
  • Build a mobile app that supports touch events and export it into devices
  • Parse and extract data from an XML file and present it on your GUI
  • Interact with web content by calling JavaScript functions from C++
  • Access MySQL and SQLite databases to retrieve data and display it on your GUI

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date :Apr 12, 2024
Length:428 pages
Edition :3rd
Language :English
ISBN-13 :9781805120117
Category :
Languages :
Tools :

What do you get with eBook?

Product feature iconInstant access to your Digital eBook purchase
Product feature icon Download this book inEPUB andPDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature iconDRM FREE - Read whenever, wherever and however you want
Product feature iconAI Assistant (beta) to help accelerate your learning
OR

Contact Details

Modal Close icon
Payment Processing...
tickCompleted

Billing Address

Product Details

Publication date :Apr 12, 2024
Length:428 pages
Edition :3rd
Language :English
ISBN-13 :9781805120117
Category :
Languages :
Concepts :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99billed monthly
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconSimple pricing, no contract
€189.99billed annually
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts
€264.99billed in 18 months
Feature tick iconUnlimited access to Packt's library of 7,000+ practical books and videos
Feature tick iconConstantly refreshed with 50+ new titles a month
Feature tick iconExclusive Early access to books as they're written
Feature tick iconSolve problems while you work with advanced search and reference features
Feature tick iconOffline reading on the mobile app
Feature tick iconChoose a DRM-free eBook or Video every month to keep
Feature tick iconPLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick iconExclusive print discounts

Frequently bought together


Modern CMake for C++
Modern CMake for C++
Read more
May 2024504 pages
Full star icon4.7 (12)
eBook
eBook
€26.98€29.99
€37.99
Cross-Platform Development with Qt 6 and Modern C++
Cross-Platform Development with Qt 6 and Modern C++
Read more
Jun 2021442 pages
Full star icon4.2 (32)
eBook
eBook
€26.98€29.99
€37.99
Qt 6 C++ GUI Programming Cookbook
Qt 6 C++ GUI Programming Cookbook
Read more
Apr 2024428 pages
Full star icon5 (7)
eBook
eBook
€24.99€27.99
€34.99
Stars icon
Total110.97
Modern CMake for C++
€37.99
Cross-Platform Development with Qt 6 and Modern C++
€37.99
Qt 6 C++ GUI Programming Cookbook
€34.99
Total110.97Stars icon

Table of Contents

16 Chapters
Chapter 1: Look-and-Feel Customization with Qt DesignerChevron down iconChevron up icon
Chapter 1: Look-and-Feel Customization with Qt Designer
Technical requirements
Using style sheets with Qt Designer
Customizing basic style sheets
Creating a login screen using style sheets
Using resources in style sheets
Customizing properties and sub-controls
Styling in Qt Modeling Language (QML)
Exposing the QML object pointer to C++
Chapter 2: Event Handling – Signals and SlotsChevron down iconChevron up icon
Chapter 2: Event Handling – Signals and Slots
Technical requirements
Signals and slots in a nutshell
UI events with signals and slots
Asynchronous programming made easier
Function callbacks
Chapter 3: States and Animations with Qt and QMLChevron down iconChevron up icon
Chapter 3: States and Animations with Qt and QML
Technical requirements
Property animation in Qt
Using easing curves to control property animation
Creating an animation group
Creating a nested animation group
State machines in Qt 6
States, transitions, and animations in QML
Animating widget properties using animators
Sprite animation
Chapter 4: QPainter and 2D GraphicsChevron down iconChevron up icon
Chapter 4: QPainter and 2D Graphics
Technical requirements
Drawing basic shapes on the screen
Exporting shapes to SVG files
Coordinate transformation
Displaying images on screen
Applying image effects to graphics
Creating a basic paint program
Rendering a 2D canvas in QML
Chapter 5: OpenGL ImplementationChevron down iconChevron up icon
Chapter 5: OpenGL Implementation
Technical requirements
Setting up OpenGL in Qt
Hello World!
Rendering 2D shapes
Rendering 3D shapes
Texturing in OpenGL
Basic lighting in OpenGL
Moving an object using keyboard controls
Qt Quick 3D in QML
Chapter 6: Transitioning from Qt 5 to Qt 6Chevron down iconChevron up icon
Chapter 6: Transitioning from Qt 5 to Qt 6
Technical requirements
Changes in C++ classes
Using Clazy checks for Clang and C++
Changes in QML types
Chapter 7: Using Network and Managing Large DocumentsChevron down iconChevron up icon
Chapter 7: Using Network and Managing Large Documents
Technical requirements
Creating a TCP server
Creating a TCP client
Uploading and downloading files using FTP
Chapter 8: Threading Basics –Asynchronous ProgrammingChevron down iconChevron up icon
Chapter 8: Threading Basics –Asynchronous Programming
Technical requirements
Using threads
QObject and QThread
Data protection and sharing data between threads
Working with QRunnable processes
Chapter 9: Building a Touch Screen Application with Qt 6Chevron down iconChevron up icon
Chapter 9: Building a Touch Screen Application with Qt 6
Technical requirements
Setting up Qt for mobile applications
Designing a basic user interface with QML
Touch events
Animation in QML
Displaying information using model/view
Integrating QML and C++
Chapter 10: JSON Parsing Made EasyChevron down iconChevron up icon
Chapter 10: JSON Parsing Made Easy
Technical requirements
JSON format in a nutshell
Processing JSON data from a text file
Writing JSON data to a text file
Using Google’s Geocoding API
Chapter 11: Conversion LibraryChevron down iconChevron up icon
Chapter 11: Conversion Library
Technical requirements
Converting data
Converting images
Converting videos
Converting currency
Chapter 12: Accessing Databases with SQL Driver and QtChevron down iconChevron up icon
Chapter 12: Accessing Databases with SQL Driver and Qt
Technical requirements
Setting up a database
Connecting to a database
Writing basic SQL queries
Creating a login screen with Qt
Displaying information from a database in model view
Advanced SQL queries
Chapter 13: Developing Web Applications Using Qt WebEngineChevron down iconChevron up icon
Chapter 13: Developing Web Applications Using Qt WebEngine
Technical requirements
Introducing Qt WebEngine
Using webview and web settings
Embedding Google maps in your project
Calling C++ functions from JavaScript
Calling Javascript functions from C++
Chapter 14: Performance OptimizationChevron down iconChevron up icon
Chapter 14: Performance Optimization
Technical requirements
Optimizing forms and C++
Profiling and optimizing QML
Rendering and animation
IndexChevron down iconChevron up icon
Index
Why subscribe?
Other Books You May EnjoyChevron down iconChevron up icon
Other Books You May Enjoy
Packt is searching for authors like you
Share Your Thoughts
Download a free PDF copy of this book

Recommendations for you

Left arrow icon
Debunking C++ Myths
Debunking C++ Myths
Read more
Dec 2024226 pages
Full star icon5 (1)
eBook
eBook
€20.99€23.99
€29.99
Go Recipes for Developers
Go Recipes for Developers
Read more
Dec 2024350 pages
eBook
eBook
€20.99€23.99
€29.99
50 Algorithms Every Programmer Should Know
50 Algorithms Every Programmer Should Know
Read more
Sep 2023538 pages
Full star icon4.5 (68)
eBook
eBook
€26.98€29.99
€37.99
€37.99
Asynchronous Programming with C++
Asynchronous Programming with C++
Read more
Nov 2024424 pages
Full star icon5 (1)
eBook
eBook
€22.99€25.99
€31.99
Modern CMake for C++
Modern CMake for C++
Read more
May 2024504 pages
Full star icon4.7 (12)
eBook
eBook
€26.98€29.99
€37.99
Learn Python Programming
Learn Python Programming
Read more
Nov 2024616 pages
Full star icon5 (1)
eBook
eBook
€20.99€23.99
€29.99
Learn to Code with Rust
Learn to Code with Rust
Read more
Nov 202457hrs 40mins
Video
Video
€56.99
Modern Python Cookbook
Modern Python Cookbook
Read more
Jul 2024818 pages
Full star icon4.9 (21)
eBook
eBook
€28.99€32.99
€41.99
Right arrow icon

Customer reviews

Top Reviews
Rating distribution
Full star iconFull star iconFull star iconFull star iconFull star icon5
(7 Ratings)
5 star100%
4 star0%
3 star0%
2 star0%
1 star0%
Filter icon Filter
Top Reviews

Filter reviews by




TinyMay 09, 2024
Full star iconFull star iconFull star iconFull star iconFull star icon5
Are you sick of writing the perfect code only to have no hits? Does it seem like users aren't smart enough to take advantage of your functions? This book offers some exceptional mitigation strategies using the QT6 system to magnify your C++ powers. Get past the basics with style sheets, color suggestions and detailed tips to make the UIs equally effective whether you are developing for the laptop or for a mobile interface. My favorite was Chapter 9, building a touch screen application. We all think about the basic keyboard inputs for the user but migrating into the modern touchscreen is a clear win. Recommend for anyone needing more depth and breadth in their C++ applications.
Amazon Verified reviewAmazon
PonaravindMay 12, 2024
Full star iconFull star iconFull star iconFull star iconFull star icon5
I had the opportunity to read the eBook, the contents were great not just for someone who has prior experience with Qt and C++ but also for beginners. This book covers the entire workflow needed to create an application using C++ and Qt: programming best practices, multithreading, database management, networking and many more. I would recommend this book as a great reference for anyone that works with C++ applications.
Amazon Verified reviewAmazon
Frequent buyerJun 12, 2024
Full star iconFull star iconFull star iconFull star iconFull star icon5
As a seasoned C++ developer, I recently picked up the “Qt 6 C++ GUI Programming Cookbook - Third Edition” and found it incredibly useful. The book stands out for its comprehensive and practical examples that are directly applicable to real-world scenarios. Additionally, it provides excellent coverage of the latest Qt 6 features, ensuring you’re up-to-date with current advancements.However, some sections could benefit from more in-depth explanations. Despite this, the book remains a fantastic resource for both beginners and experienced developers. Four stars!
Amazon Verified reviewAmazon
jens wellerJun 21, 2024
Full star iconFull star iconFull star iconFull star iconFull star icon5
I've received a review copy from Packt and my first impression good.This book is a solid introduction into Qt, QML and Qt6 plus QtCreator.
Amazon Verified reviewAmazon
RVJun 12, 2024
Full star iconFull star iconFull star iconFull star iconFull star icon5
Book Review: Qt 6 C++ GUI Programming Cookbook by Lee Zhi EngThis book offers the reader practical examples and solutions for modern GUI development using Qt 6 framework.It includes examples and solutions for GUI applications using Qt Widgets and QML.The explanation for each example is clear, concise but covers important details as well and is organized as 'How To' and 'How it Works' sections with a section explaining more details wherever it is appropriate.The book begins with simple but detailed UI design using both Qt Widgets and QML and gradually transition to more complex concepts like Animation, Drawing using QPainter, OpenGL.This book is just not about GUI programming using Qt6, it covers other important and complex concepts such as Multithreaded Programming, Asynchronous Programming, Network Programming, Accessing Databases, Web Application development using GUI based examples to showcase ease of use and capabilities offered by Qt6 framework.This book requires reader to have some familiarity with C++ and Qt framework be it Qt 4/5. Some chapters such as using OpenGL with Qt may not be intuitive if reader is nor familiar with Graphics Programming in general and specifically OpenGL.In Summary, 'Qt 6 C++ GUI Programming Cookbook' is a well-structured guide that can help GUI Developers/GUI Designers to develop attractive application with Qt 6. This book could be a great starting point for someone considering to dive into Qt 6 for GUI development.
Amazon Verified reviewAmazon
  • Arrow left icon Previous
  • 1
  • 2
  • Arrow right icon Next

People who bought this also bought

Left arrow icon
50 Algorithms Every Programmer Should Know
50 Algorithms Every Programmer Should Know
Read more
Sep 2023538 pages
Full star icon4.5 (68)
eBook
eBook
€26.98€29.99
€37.99
€37.99
Event-Driven Architecture in Golang
Event-Driven Architecture in Golang
Read more
Nov 2022384 pages
Full star icon4.9 (11)
eBook
eBook
€26.98€29.99
€37.99
The Python Workshop Second Edition
The Python Workshop Second Edition
Read more
Nov 2022600 pages
Full star icon4.6 (22)
eBook
eBook
€27.99€31.99
€38.99
Template Metaprogramming with C++
Template Metaprogramming with C++
Read more
Aug 2022480 pages
Full star icon4.6 (14)
eBook
eBook
€25.99€28.99
€35.99
Domain-Driven Design with Golang
Domain-Driven Design with Golang
Read more
Dec 2022204 pages
Full star icon4.4 (19)
eBook
eBook
€23.99€26.99
€33.99
Right arrow icon

About the author

Profile icon Eng
Eng
LinkedIn iconGithub icon
Lee Zhi Eng is a self-taught programmer who worked as an artist and programmer at several game studios before becoming a part-time lecturer for 2 years at a university, teaching game development subjects related to Unity and Unreal Engine.He has not only taken part in various projects related to games, interactive apps, and virtual reality but has also participated in multiple projects that are more oriented toward software and system development. When he is not writing code, he enjoys traveling, photography, and exploring new technologies.
Read more
See other products by Eng
Getfree access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook?Chevron down iconChevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website?Chevron down iconChevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook?Chevron down iconChevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support?Chevron down iconChevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks?Chevron down iconChevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook?Chevron down iconChevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.


[8]ページ先頭

©2009-2025 Movatter.jp