summaryrefslogtreecommitdiff
path: root/examples/demos/documentviewer/doc/src/documentviewer.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/demos/documentviewer/doc/src/documentviewer.qdoc')
-rw-r--r--examples/demos/documentviewer/doc/src/documentviewer.qdoc296
1 files changed, 145 insertions, 151 deletions
diff --git a/examples/demos/documentviewer/doc/src/documentviewer.qdoc b/examples/demos/documentviewer/doc/src/documentviewer.qdoc
index f153b6f6..ddcee81b 100644
--- a/examples/demos/documentviewer/doc/src/documentviewer.qdoc
+++ b/examples/demos/documentviewer/doc/src/documentviewer.qdoc
@@ -5,298 +5,292 @@
\title Document Viewer
\ingroup examples-widgets
\example demos/documentviewer
+ \meta {tag} {demo,widgets,mainwindow}
\brief A Widgets application to display and print JSON, text, and PDF files.
- Demonstrates various features to use in widget applications:
+
+ \e{Document Viewer} demonstrates how to use a QMainWindow with static
+ and dynamic toolbars, menus, and actions. Additionally, it demonstrates
+ the following features in widget-based applications:
+
\list
- \li Using QSettings, query and save user preferences, manage file histories and
- \li Controllinh cursor behavior when hovering over widgets.
- \li Writing and dynamically loading plugins.
+ \li Using QSettings to query and save user preferences,
+ and managing previously opened file history.
+ \li Controlling cursor behavior when hovering over widgets.
+ \li Creating dynamically loaded plugins.
\endlist
\image documentviewer_open.png
- \meta {tag} {demo,widgets,mainwindow}
- \e{Document Viewer} demonstrates how to use a QMainWindow with static
- and dynamic tool bars, menus and actions.
-
- The MainWindow class provides a common application screen with general menus,
- actions and a tool bar. It provides functionality to open a file, determine the
- content type and keep a list of previously opened files. It stores information
- in QSettings and reads settings when launched.
- Depending on the opened file's content type, it creates a suitable viewer to
- display it and provide printing functionality.
- \section1 Creating an executable
+ \section1 Creating an application and the main window
- To create an executable, we use a standard main.cpp file.
- First, we set the application's organization name:
+ The application and its main window is constructed in \c main.cpp.
+ The main() function uses QCommandLineParser to process command line
+ arguments -- \e help, \e version, and an optional positional
+ argument, \e file. If the user provided a path to a file when
+ launching the application, the main window opens it:
\quotefromfile demos/documentviewer/app/main.cpp
\skipto int main
- \printuntil QApplication::set
- \endsection1
+ \printuntil exec
+ \printline }
- \section1 Creating an application and showing the main window
-
- \quotefromfile demos/documentviewer/app/main.cpp
- \skipto QApplication app
- \printuntil }
- \endsection1
- \section1 The MainWindow class
+ \section1 MainWindow class
- The class constructor initializes the user interface created in Qt Designer.
- It links the actions for opening a file and the about dialog to their implementation.
+ The \c MainWindow class provides an application screen with menus,
+ actions, and a toolbar. It can open a file, automatically detecting its
+ content type. It also maintains a list of previously opened files, using
+ QSettings to store and reload settings when launched. The MainWindow
+ creates a suitable \e viewer for the opened file, based on its content type,
+ and provides support for printing a document.
- \quotefromfile demos/documentviewer/app/mainwindow.cpp
- \skipto ui->setupUi
- \printuntil triggered
+ MainWindow's constructor initializes the user interface created in Qt
+ Designer. The \c mainwindow.ui file provides a QTabWidget on the left,
+ showing bookmarks and thumbnails. On the right, there is a QScrollArea for
+ viewing file content.
- The \c mainwindow.ui file provides a QTabWidget on the left, where bookmarks and thumbnails
- can be displayed. It provides a QScrollArea on the right, where the viewed file contents are
- \printuntil showMenu);
- If a file is opened, the {File} class (inheriting from {QFile}) automatically determines
- the FileType used in this application. If no valid file type could be established, the user
- is asked, if it should be opened as plain text.
+ \section1 ViewerFactory class
- The \c ViewerFactory class is used to manage file type specific viewers, implemented as plugins.
- When an instance of \c ViewerFactory is created, pointers to view area and QMainWindow have
- to be passed to the constructor.
+ The \c ViewerFactory class manages viewers for known file types. These viewers
+ are implemented as plugins. When an instance of a ViewerFactory is created,
+ pointers to the view area and the main window are passed to the constructor:
\code
m_factory.reset(new ViewerFactory(ui->viewArea, this));
\endcode
- \c ViewerFactory loads all available plugins when constructed. It provides public APIs to
- query about loaded plugins, their names, and supported mime types.
+ ViewerFactory loads all available plugins on construction. It provides
+ a public API to query the loaded plugins, their names, and supported MIME
+ types:
\quotefromfile demos/documentviewer/app/viewerfactory.h
\skipto ViewerList
\printuntil QStringList supportedMimeTypes() const;
-
- The method \c viewer returns the pointer to the plugin suitable to open the QFile passed
- as an argument.
+ The \c viewer() function returns a pointer to the plugin suitable to open
+ the QFile passed as an argument:
\code
m_viewer = m_factory->viewer(file);
\endcode
- If the application settings contain a section for the viewer, it is passed to the viewer's
- virtual restoreState method. Afterwards, the standard UI assets are passed to the viewer
- and it's display widget is displayed in the main scroll area.
+ If the application settings contain a section for the viewer, it's passed
+ to the viewer's virtual \c restoreState() function:
+
+ \quotefromfile demos/documentviewer/app/mainwindow.cpp
+ \skipto MainWindow::restoreViewerSettings
+ \printuntil restoreState
+ \printline }
+
+ Then, the standard UI assets are passed to the viewer and the main scroll
+ area is set to show the viewer's display widget:
\quotefromfile demos/documentviewer/app/mainwindow.cpp
\skipuntil void MainWindow::openFile
\skipto m_viewer->initViewer
\printuntil }
- \endsection1
-
- \section1 The ViewerFactory class
- The only static method of the class takes a file, the widget where the viewed content is to be
- displayed, the main window and the user questions.
- Depending on the file's mime type, it creates an appropriate document viewer.
- \quotefromfile demos/documentviewer/app/mainwindow.cpp
- \skipto AbstractViewer
- \printuntil }
- \endsection1
+ \section1 AbstractViewer class
- \section1 The AbstractViewer class
+ \c AbstractViewer provides a generalized API to view, save, and print a
+ document. Properties of both the document and the viewer can be queried:
- The class provides a generalized API to view and browse through a document, save and print it.
- Properties of the document and the viewer itself can be queried: Does the document have content?
- Has it been modified? Is an overview (thumbnails or bookmarks) supported?
- The viewer's state can be saved to and restored from a QByteArray, which the application can
- access to store in its settings.
+ \list
+ \li Does the document have content?
+ \li Has it been modified?
+ \li Is an overview (thumbnails or bookmarks) supported?
+ \endlist
- AbstractViewer provides protected methods for classes inheriting from it, to create actions
- and menus on the main window. In order to display these assets on the main window, they are
- parented to it. AbstractViewer takes responsibility to remove and destroy the UI assets it
- created. It inherits from QObject to provide access to signals and slots.
+ AbstractViewer provides protected methods for derived classes to create
+ actions and menus on the main window. In order to display these
+ assets on the main window, they are parented to it. AbstractViewer is
+ responsible for removing and destroying the UI assets it creates. It
+ inherits from QObject to implement signals and slots.
\section2 Signals
+ \c {void uiInitialized();}
- \code
- void uiInitialized();
- \endcode
+ This signal is emitted after a viewer receives all necessary information
+ about UI assets on the main window.
- The signal is emitted when AbstractViewer has received all necessary information about UI
- assets on the main window.
+ \c {void printingEnabledChanged(bool enabled);}
- \code
- void printingEnabledChanged(bool enabled);
- \endcode
+ This signal is emitted when document printing is either enabled or
+ disabled. This happens after a new document was successfully loaded,
+ or, for example, all content was removed.
- This signal is emitted when document printing has been enabled or disabled, e.g. because a new
- document has been successfully loaded or all content has been removed.
+ \c {void printStatusChanged(AbstractViewer::PrintStatus status);}
- \code
- void printStatusChanged(AbstractViewer::PrintStatus status);
- \endcode
+ After starting the printing process, this signal notifies about changes in
+ its progress.
- When printing has been started, this signal notifies about the printing progress.
+ \c {void documentLoaded(const QString &fileName);}
- \code
- void documentLoaded(const QString &fileName);
- \endcode
- \endsection2
+ This signal notifies the application that a document was successfully
+ loaded.
+
+
+ \section1 TxtViewer class
+
+ \c TxtViewer is a simple text viewer, inheriting from AbstractViewer.
+ It supports editing text files, copy/cut and paste, printing, and
+ saving changes.
- The signal notifies the application that a document has been loaded successfully.
- \endsection1
- \section1 The TextViewer class
+ \section1 JsonViewer class
- A simple text viewer, inheriting from AbstractViewer.
- It features editing text files, copy/cut and paste, printing and saving changes.
+ \c JsonViewer displays a JSON file in a QTreeView. Internally, it loads
+ the contents of a file into a QJsonDocument and uses it to populate a
+ custom tree model with \c JsonItemModel.
- \section1 The JsonViewer class
+ The JSON viewer plugin demonstrates how to implement a custom item model
+ inherited from QAbstractItemModel. The \c JsonTreeItem class provides a
+ basic API for manipulating JSON data and propagating it back to the
+ underlying QJsonDocument.
- The plugin class displays a JSON file in a QTreeView.
- It loads a file into a QJsonDocument, used to populate a custom tree model with
- JsonItemModel.
- This part of the JSON viewer demonstrates, how to implement custom item models inheriting from
- QAbstractItemModel. The JsonTreeItem class provides basic API for manipulating JSON data
- and propagating it back to the underlying QJsonDocument.
+ JsonViewer uses the top-level objects of the document as bookmarks for
+ navigation. Other nodes (keys and values) can be added as additional
+ bookmarks, or removed from the bookmark list. A QLineEdit is used as a
+ search field to navigate through the JSON tree.
- JsonViewer uses the toplevel objects as bookmarks for navigation. Other nodes (keys or
- values) can be added as additional bookmarks or removed from the bookmark list.
- A QLineEdit is used as a search field to navigate through the JSON tree.
- \endsection1
- \section1 The PdfViewer class
- This plugin is a fork of the QPdfViewerWidgets example.
- It demonstrates the use of QScroller to smoothly flick through the document.
+ \section1 PdfViewer class
- \section1 The TxtViewer class
- This plugin is a simple a text editor, to show how a user interface is written in pure C++.
- \endsection1
+ The \c PdfViewer class (and plugin) is a fork of the \l {PDF Viewer
+ Widget Example}. It demonstrates the use of QScroller to smoothly
+ flick through a document.
- \section1 Additional classes for application features
- \section2 The HoverWatcher class
+ \section1 Other relevant classes
- The class can be used to set override cursors when the mouse is hovering over a widget and
- to restore them upon departure.
- In order to prevent multiple HoverWatcher instances created for the same widget, it is
+ \section2 HoverWatcher class
+
+ The \c HoverWatcher class sets an override cursor when hovering the
+ mouse over a widget, restoring it upon departure. To prevent multiple
+ HoverWatcher instances being created for the same widget, it is
implemented as a singleton per widget.
- HoverWatcher inherits from QObject and the QWidget watched becomes the instance's parent.
- An event filter is used to intercept the hover events without consuming them.
+ HoverWatcher inherits from QObject and takes the QWidget it watches
+ as the instance's parent. It installs an event filter to intercept hover
+ events without consuming them:
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.cpp
\skipto HoverWatcher::HoverWatcher
\printuntil }
- The actions watched are represented in an enum.
+ The \c HoverAction enum lists the actions that HoverWatcher reacts to:
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.h
\skipto enum HoverAction
\printuntil };
- Static methods create watchers, check their existence for a specific QWidget or dismiss
- a watcher.
+ Static functions create watchers, check their existence for a specific
+ QWidget, or dismiss a watcher:
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.h
\skipto static HoverWatcher
\printuntil static void dismiss
- A cursor shape can be specified or unset for each HoverAction. If no cursor shape is
- specified for an action, the application's override cursor will be restored when it occurs.
+ A cursor shape can be set or unset for each HoverAction. If there is
+ no associated cursor shape, the application's override cursor is
+ restored when the action is triggered.
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.h
\skipto public slots
\printuntil void unSetCursorShape
- The mouseButtons property specifies, which mouse buttons to consider for the MousePress action.
+ The \c mouseButtons property holds the mouse buttons to consider for a
+ \c MousePress action:
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.h
\skipuntil public slots
\skipto setMouseButtons
\printuntil setMouseButton(
- Action specific signals are emitted when an action has been processed.
+ Action-specific signals are emitted after processing an action:
\quotefromfile demos/documentviewer/plugins/pdfviewer/hoverwatcher.h
\skipto signals
\printuntil left();
- A general signal is emitted which passes the processed action as an argument.
+ A general signal is emitted which passes the processed action as an
+ argument:
\code
void hoverAction(HoverAction action);
\endcode
- \endsection2
- \section2 The {RecentFiles} class
+ \section2 RecentFiles class
- The class is a QStringList, specialized to manage a list of recently opened files.
+ \c RecentFiles is a QStringList that is specialized to manage a list of
+ recently opened files.
\quotefromfile demos/documentviewer/app/recentfiles.cpp
\skipto RecentFiles::RecentFiles
\printuntil }
- It provides slots to add a single or multiple files, by passing their path or a list
- of paths as an argument. A file is added, if the path leads to a valid file.
- If a file already exists in the list of recent files, it is removed from its original position
- and added on the top.
+ RecentFiles has slots to add either a single file or multiple files in one
+ go. An entry is added to the list of recent files if the path points to a
+ file that exists and can be opened. If a file is already in the list, it
+ is removed from its original position and added to the top.
\quotefromfile demos/documentviewer/app/recentfiles.h
\skipto public slots
\printuntil addFiles
- Files can be removed by name or by index.
+ Files are removed from the list either by name or by index:
\quotefromfile demos/documentviewer/app/recentfiles.h
\skipuntil public slots
\skipto removeFile
- \printuntil addFiles
+ \printuntil qsizetype index
- Slots are available to save and restore from {QSettings}.
- Files restored from settings are ignored, if they no longer exist.
+ Slots that implement saving and restoring from QSettings:
\quotefromfile demos/documentviewer/app/recentfiles.h
\skipuntil public slots
\skipto saveSettings
\printuntil restoreFromSettings
- The maxFiles property manages the maximum amount of recent files to be remebered (default: 10).
+ When restoring settings, nonexistent files are ignored. The \c maxFiles
+ property holds the maximum amount of recent files to store (default is
+ 10).
\code
qsizetype maxFiles();
void setMaxFiles(qsizetype maxFiles);
\endcode
- {RecentFiles} verifies a file can be opened in {openMode}, before adding it.
+ \c {RecentFiles} verifies that a file can be opened in \c {openMode} before
+ accepting it.
\code
void setOpenMode(QIODevice::OpenMode mode);
QIODevice::OpenMode openMode() const;
\endcode
- \endsection2
- \section2 The {RecentFileMenu} class
+ \section2 RecentFileMenu class
- The {RecentFileMenu} class is a QMenu, specialized as a submenu to display a \l{RecentFiles}
- object as a submenu.
+ \c {RecentFileMenu} is a QMenu, specialized to display a
+ \l{RecentFiles class}{RecentFiles} object as a submenu.
- Its constructor takes a parent widget, usually and QAction or a QMenu.
- Its fileOpened signal passes a QString argument with the absolute file name, when the
- application user has selected a recent file from the list.
+ Its constructor takes a pointer to a parent QObject and a pointer to a
+ RecentFiles object, the content of which it will visualize.
+ Its \c fileOpened() signal, triggered when the user selects a recent file
+ from the list, passes the absolute path to the file as an argument.
- \note
- A {RecentFileMenu} is deleted either with its parent widget, or with the RecentFiles object
- passed to its constructor.
+ \note \c {RecentFileMenu} is destroyed either by its parent widget, or by the
+ \c {RecentFiles} object passed to its constructor.
\quotefromfile demos/documentviewer/app/recentfilemenu.h
- \skipuntil class RecentFileMenu
+ \skipto class RecentFileMenu
\printuntil void fileOpened
-
- \endsection2
- \endsection1
-
+ \dots
+ \skipuntil RecentFiles
+ \printline }
*/