<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>mainwindow.cpp Example File | Qt Widgets 5.12.2</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td >Qt 5.12</td><td ><a href="qtwidgets-index.html">Qt Widgets</a></td><td ><a href="qtwidgets-richtext-orderform-example.html">Order Form Example</a></td><td >mainwindow.cpp Example File</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right"><a href="qtwidgets-index.html">Qt 5.12.2 Reference Documentation</a></td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">mainwindow.cpp Example File</h1> <span class="subtitle">richtext/orderform/mainwindow.cpp</span> <!-- $$$richtext/orderform/mainwindow.cpp-description --> <div class="descr"> <a name="details"></a> <pre class="cpp"> <span class="comment">/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** BSD License Usage ** Alternatively, you may use this file under the terms of the BSD license ** as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/</span> <span class="preprocessor">#include <QtWidgets></span> <span class="preprocessor">#if defined(QT_PRINTSUPPORT_LIB)</span> <span class="preprocessor">#include <QtPrintSupport/qtprintsupportglobal.h></span> <span class="preprocessor">#if QT_CONFIG(printdialog)</span> <span class="preprocessor">#include <QPrinter></span> <span class="preprocessor">#include <QPrintDialog></span> <span class="preprocessor">#endif</span> <span class="preprocessor">#endif</span> <span class="preprocessor">#include "detailsdialog.h"</span> <span class="preprocessor">#include "mainwindow.h"</span> MainWindow<span class="operator">::</span>MainWindow() { <span class="type"><a href="qmenu.html">QMenu</a></span> <span class="operator">*</span>fileMenu <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qmenu.html">QMenu</a></span>(tr(<span class="string">"&File"</span>)<span class="operator">,</span> <span class="keyword">this</span>); <span class="type"><a href="qaction.html">QAction</a></span> <span class="operator">*</span>newAction <span class="operator">=</span> fileMenu<span class="operator">-</span><span class="operator">></span>addAction(tr(<span class="string">"&New..."</span>)); newAction<span class="operator">-</span><span class="operator">></span>setShortcuts(<span class="type"><a href="../qtgui/qkeysequence.html">QKeySequence</a></span><span class="operator">::</span>New); printAction <span class="operator">=</span> fileMenu<span class="operator">-</span><span class="operator">></span>addAction(tr(<span class="string">"&Print..."</span>)<span class="operator">,</span> <span class="keyword">this</span><span class="operator">,</span> SLOT(printFile())); printAction<span class="operator">-</span><span class="operator">></span>setShortcuts(<span class="type"><a href="../qtgui/qkeysequence.html">QKeySequence</a></span><span class="operator">::</span>Print); printAction<span class="operator">-</span><span class="operator">></span>setEnabled(<span class="keyword">false</span>); <span class="type"><a href="qaction.html">QAction</a></span> <span class="operator">*</span>quitAction <span class="operator">=</span> fileMenu<span class="operator">-</span><span class="operator">></span>addAction(tr(<span class="string">"E&xit"</span>)); quitAction<span class="operator">-</span><span class="operator">></span>setShortcuts(<span class="type"><a href="../qtgui/qkeysequence.html">QKeySequence</a></span><span class="operator">::</span>Quit); menuBar()<span class="operator">-</span><span class="operator">></span>addMenu(fileMenu); letters <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qtabwidget.html">QTabWidget</a></span>; connect(newAction<span class="operator">,</span> <span class="operator">&</span><span class="type"><a href="qaction.html">QAction</a></span><span class="operator">::</span>triggered<span class="operator">,</span> <span class="keyword">this</span><span class="operator">,</span> <span class="operator">&</span>MainWindow<span class="operator">::</span>openDialog); connect(quitAction<span class="operator">,</span> <span class="operator">&</span><span class="type"><a href="qaction.html">QAction</a></span><span class="operator">::</span>triggered<span class="operator">,</span> <span class="keyword">this</span><span class="operator">,</span> <span class="operator">&</span>MainWindow<span class="operator">::</span>close); setCentralWidget(letters); setWindowTitle(tr(<span class="string">"Order Form"</span>)); } <span class="type">void</span> MainWindow<span class="operator">::</span>createLetter(<span class="keyword">const</span> <span class="type"><a href="../qtcore/qstring.html">QString</a></span> <span class="operator">&</span>name<span class="operator">,</span> <span class="keyword">const</span> <span class="type"><a href="../qtcore/qstring.html">QString</a></span> <span class="operator">&</span>address<span class="operator">,</span> <span class="type"><a href="../qtcore/qlist.html">QList</a></span><span class="operator"><</span><span class="type"><a href="../qtcore/qpair.html">QPair</a></span><span class="operator"><</span><span class="type"><a href="../qtcore/qstring.html">QString</a></span><span class="operator">,</span><span class="type">int</span><span class="operator">></span> <span class="operator">></span> orderItems<span class="operator">,</span> bool sendOffers) { <span class="type"><a href="qtextedit.html">QTextEdit</a></span> <span class="operator">*</span>editor <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qtextedit.html">QTextEdit</a></span>; <span class="type">int</span> tabIndex <span class="operator">=</span> letters<span class="operator">-</span><span class="operator">></span>addTab(editor<span class="operator">,</span> name); letters<span class="operator">-</span><span class="operator">></span>setCurrentIndex(tabIndex); <span class="type"><a href="../qtgui/qtextcursor.html">QTextCursor</a></span> cursor(editor<span class="operator">-</span><span class="operator">></span>textCursor()); cursor<span class="operator">.</span>movePosition(<span class="type"><a href="../qtgui/qtextcursor.html">QTextCursor</a></span><span class="operator">::</span>Start); <span class="type"><a href="../qtgui/qtextframe.html">QTextFrame</a></span> <span class="operator">*</span>topFrame <span class="operator">=</span> cursor<span class="operator">.</span>currentFrame(); <span class="type"><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></span> topFrameFormat <span class="operator">=</span> topFrame<span class="operator">-</span><span class="operator">></span>frameFormat(); topFrameFormat<span class="operator">.</span>setPadding(<span class="number">16</span>); topFrame<span class="operator">-</span><span class="operator">></span>setFrameFormat(topFrameFormat); <span class="type"><a href="../qtgui/qtextcharformat.html">QTextCharFormat</a></span> textFormat; <span class="type"><a href="../qtgui/qtextcharformat.html">QTextCharFormat</a></span> boldFormat; boldFormat<span class="operator">.</span>setFontWeight(<span class="type"><a href="../qtgui/qfont.html">QFont</a></span><span class="operator">::</span>Bold); <span class="type"><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></span> referenceFrameFormat; referenceFrameFormat<span class="operator">.</span>setBorder(<span class="number">1</span>); referenceFrameFormat<span class="operator">.</span>setPadding(<span class="number">8</span>); referenceFrameFormat<span class="operator">.</span>setPosition(<span class="type"><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></span><span class="operator">::</span>FloatRight); referenceFrameFormat<span class="operator">.</span>setWidth(<span class="type"><a href="../qtgui/qtextlength.html">QTextLength</a></span>(<span class="type"><a href="../qtgui/qtextlength.html">QTextLength</a></span><span class="operator">::</span>PercentageLength<span class="operator">,</span> <span class="number">40</span>)); cursor<span class="operator">.</span>insertFrame(referenceFrameFormat); cursor<span class="operator">.</span>insertText(<span class="string">"A company"</span><span class="operator">,</span> boldFormat); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(<span class="string">"321 City Street"</span>); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(<span class="string">"Industry Park"</span>); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(<span class="string">"Another country"</span>); cursor<span class="operator">.</span>setPosition(topFrame<span class="operator">-</span><span class="operator">></span>lastPosition()); cursor<span class="operator">.</span>insertText(name<span class="operator">,</span> textFormat); <span class="type"><a href="../qtcore/qstring.html">QString</a></span> line; foreach (line<span class="operator">,</span> address<span class="operator">.</span>split(<span class="string">"\n"</span>)) { cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(line); } cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertBlock(); <span class="type"><a href="../qtcore/qdate.html">QDate</a></span> date <span class="operator">=</span> <span class="type"><a href="../qtcore/qdate.html">QDate</a></span><span class="operator">::</span>currentDate(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"Date: %1"</span>)<span class="operator">.</span>arg(date<span class="operator">.</span>toString(<span class="string">"d MMMM yyyy"</span>))<span class="operator">,</span> textFormat); cursor<span class="operator">.</span>insertBlock(); <span class="type"><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></span> bodyFrameFormat; bodyFrameFormat<span class="operator">.</span>setWidth(<span class="type"><a href="../qtgui/qtextlength.html">QTextLength</a></span>(<span class="type"><a href="../qtgui/qtextlength.html">QTextLength</a></span><span class="operator">::</span>PercentageLength<span class="operator">,</span> <span class="number">100</span>)); cursor<span class="operator">.</span>insertFrame(bodyFrameFormat); cursor<span class="operator">.</span>insertText(tr(<span class="string">"I would like to place an order for the following "</span> <span class="string">"items:"</span>)<span class="operator">,</span> textFormat); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertBlock(); <span class="type"><a href="../qtgui/qtexttableformat.html">QTextTableFormat</a></span> orderTableFormat; orderTableFormat<span class="operator">.</span>setAlignment(<span class="type"><a href="../qtcore/qt.html">Qt</a></span><span class="operator">::</span>AlignHCenter); <span class="type"><a href="../qtgui/qtexttable.html">QTextTable</a></span> <span class="operator">*</span>orderTable <span class="operator">=</span> cursor<span class="operator">.</span>insertTable(<span class="number">1</span><span class="operator">,</span> <span class="number">2</span><span class="operator">,</span> orderTableFormat); <span class="type"><a href="../qtgui/qtextframeformat.html">QTextFrameFormat</a></span> orderFrameFormat <span class="operator">=</span> cursor<span class="operator">.</span>currentFrame()<span class="operator">-</span><span class="operator">></span>frameFormat(); orderFrameFormat<span class="operator">.</span>setBorder(<span class="number">1</span>); cursor<span class="operator">.</span>currentFrame()<span class="operator">-</span><span class="operator">></span>setFrameFormat(orderFrameFormat); cursor <span class="operator">=</span> orderTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"Product"</span>)<span class="operator">,</span> boldFormat); cursor <span class="operator">=</span> orderTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">0</span><span class="operator">,</span> <span class="number">1</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"Quantity"</span>)<span class="operator">,</span> boldFormat); <span class="keyword">for</span> (<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> orderItems<span class="operator">.</span>count(); <span class="operator">+</span><span class="operator">+</span>i) { <span class="type"><a href="../qtcore/qpair.html">QPair</a></span><span class="operator"><</span><span class="type"><a href="../qtcore/qstring.html">QString</a></span><span class="operator">,</span><span class="type">int</span><span class="operator">></span> item <span class="operator">=</span> orderItems<span class="operator">[</span>i<span class="operator">]</span>; <span class="type">int</span> row <span class="operator">=</span> orderTable<span class="operator">-</span><span class="operator">></span>rows(); orderTable<span class="operator">-</span><span class="operator">></span>insertRows(row<span class="operator">,</span> <span class="number">1</span>); cursor <span class="operator">=</span> orderTable<span class="operator">-</span><span class="operator">></span>cellAt(row<span class="operator">,</span> <span class="number">0</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(item<span class="operator">.</span>first<span class="operator">,</span> textFormat); cursor <span class="operator">=</span> orderTable<span class="operator">-</span><span class="operator">></span>cellAt(row<span class="operator">,</span> <span class="number">1</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(<span class="type"><a href="../qtcore/qstring.html">QString</a></span>(<span class="string">"%1"</span>)<span class="operator">.</span>arg(item<span class="operator">.</span>second)<span class="operator">,</span> textFormat); } cursor<span class="operator">.</span>setPosition(topFrame<span class="operator">-</span><span class="operator">></span>lastPosition()); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"Please update my records to take account of the "</span> <span class="string">"following privacy information:"</span>)); cursor<span class="operator">.</span>insertBlock(); <span class="type"><a href="../qtgui/qtexttable.html">QTextTable</a></span> <span class="operator">*</span>offersTable <span class="operator">=</span> cursor<span class="operator">.</span>insertTable(<span class="number">2</span><span class="operator">,</span> <span class="number">2</span>); cursor <span class="operator">=</span> offersTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">0</span><span class="operator">,</span> <span class="number">1</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"I want to receive more information about your "</span> <span class="string">"company's products and special offers."</span>)<span class="operator">,</span> textFormat); cursor <span class="operator">=</span> offersTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">1</span><span class="operator">,</span> <span class="number">1</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"I do not want to receive any promotional information "</span> <span class="string">"from your company."</span>)<span class="operator">,</span> textFormat); <span class="keyword">if</span> (sendOffers) cursor <span class="operator">=</span> offersTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span>)<span class="operator">.</span>firstCursorPosition(); <span class="keyword">else</span> cursor <span class="operator">=</span> offersTable<span class="operator">-</span><span class="operator">></span>cellAt(<span class="number">1</span><span class="operator">,</span> <span class="number">0</span>)<span class="operator">.</span>firstCursorPosition(); cursor<span class="operator">.</span>insertText(<span class="string">"X"</span><span class="operator">,</span> boldFormat); cursor<span class="operator">.</span>setPosition(topFrame<span class="operator">-</span><span class="operator">></span>lastPosition()); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(tr(<span class="string">"Sincerely,"</span>)<span class="operator">,</span> textFormat); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertBlock(); cursor<span class="operator">.</span>insertText(name); printAction<span class="operator">-</span><span class="operator">></span>setEnabled(<span class="keyword">true</span>); } <span class="type">void</span> MainWindow<span class="operator">::</span>createSample() { DetailsDialog dialog(<span class="string">"Dialog with default values"</span><span class="operator">,</span> <span class="keyword">this</span>); createLetter(<span class="string">"Mr. Smith"</span><span class="operator">,</span> <span class="string">"12 High Street\nSmall Town\nThis country"</span><span class="operator">,</span> dialog<span class="operator">.</span>orderItems()<span class="operator">,</span> <span class="keyword">true</span>); } <span class="type">void</span> MainWindow<span class="operator">::</span>openDialog() { DetailsDialog dialog(tr(<span class="string">"Enter Customer Details"</span>)<span class="operator">,</span> <span class="keyword">this</span>); <span class="keyword">if</span> (dialog<span class="operator">.</span>exec() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qdialog.html">QDialog</a></span><span class="operator">::</span>Accepted) { createLetter(dialog<span class="operator">.</span>senderName()<span class="operator">,</span> dialog<span class="operator">.</span>senderAddress()<span class="operator">,</span> dialog<span class="operator">.</span>orderItems()<span class="operator">,</span> dialog<span class="operator">.</span>sendOffers()); } } <span class="type">void</span> MainWindow<span class="operator">::</span>printFile() { <span class="preprocessor">#if QT_CONFIG(printdialog)</span> <span class="type"><a href="qtextedit.html">QTextEdit</a></span> <span class="operator">*</span>editor <span class="operator">=</span> <span class="keyword">static_cast</span><span class="operator"><</span><span class="type"><a href="qtextedit.html">QTextEdit</a></span><span class="operator">*</span><span class="operator">></span>(letters<span class="operator">-</span><span class="operator">></span>currentWidget()); <span class="type">QPrinter</span> printer; <span class="type">QPrintDialog</span> dialog(<span class="operator">&</span>printer<span class="operator">,</span> <span class="keyword">this</span>); dialog<span class="operator">.</span>setWindowTitle(tr(<span class="string">"Print Document"</span>)); <span class="keyword">if</span> (editor<span class="operator">-</span><span class="operator">></span>textCursor()<span class="operator">.</span>hasSelection()) dialog<span class="operator">.</span>addEnabledOption(<span class="type">QAbstractPrintDialog</span><span class="operator">::</span>PrintSelection); <span class="keyword">if</span> (dialog<span class="operator">.</span>exec() <span class="operator">!</span><span class="operator">=</span> <span class="type"><a href="qdialog.html">QDialog</a></span><span class="operator">::</span>Accepted) { <span class="keyword">return</span>; } editor<span class="operator">-</span><span class="operator">></span>print(<span class="operator">&</span>printer); <span class="preprocessor">#endif</span> } </pre> </div> <!-- @@@richtext/orderform/mainwindow.cpp --> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2019 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br/> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br/> Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners. </p> </div> </body> </html>