A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt</id>
		<title>C++/Qt - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt&amp;action=history"/>
		<updated>2026-04-18T20:40:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt&amp;diff=1296&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt&amp;diff=1296&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt&amp;diff=1297&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt&amp;diff=1297&amp;oldid=prev"/>
				<updated>2010-05-25T10:25:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* [[C++/Qt/Color Dialog | Color Dialog]]&lt;br /&gt;
* [[C++/Qt/Drag Drop | Drag Drop]]&lt;br /&gt;
* [[C++/Qt/Draw Shape | Draw Shape]]&lt;br /&gt;
* [[C++/Qt/Layout | Layout]]&lt;br /&gt;
* [[C++/Qt/Open File Dialog | Open File Dialog]]&lt;br /&gt;
* [[C++/Qt/QAbstractItemModel | QAbstractItemModel]]&lt;br /&gt;
* [[C++/Qt/QAbstractItemView | QAbstractItemView]]&lt;br /&gt;
* [[C++/Qt/QAbstractListModel | QAbstractListModel]]&lt;br /&gt;
* [[C++/Qt/QAbstractTableModel | QAbstractTableModel]]&lt;br /&gt;
* [[C++/Qt/QAction | QAction]]&lt;br /&gt;
* [[C++/Qt/QApplication | QApplication]]&lt;br /&gt;
* [[C++/Qt/QAssistantClient | QAssistantClient]]&lt;br /&gt;
* [[C++/Qt/QBrush | QBrush]]&lt;br /&gt;
* [[C++/Qt/QBuffer | QBuffer]]&lt;br /&gt;
* [[C++/Qt/QByteArray | QByteArray]]&lt;br /&gt;
* [[C++/Qt/QCalendarWidget | QCalendarWidget]]&lt;br /&gt;
* [[C++/Qt/QCheckBox | QCheckBox]]&lt;br /&gt;
* [[C++/Qt/QComboBox | QComboBox]]&lt;br /&gt;
* [[C++/Qt/QContextMenuEvent | QContextMenuEvent]]&lt;br /&gt;
* [[C++/Qt/QDBusMessage | QDBusMessage]]&lt;br /&gt;
* [[C++/Qt/QDataStream | QDataStream]]&lt;br /&gt;
* [[C++/Qt/QDate | QDate]]&lt;br /&gt;
* [[C++/Qt/QDesignerCustomWidgetInterface | QDesignerCustomWidgetInterface]]&lt;br /&gt;
* [[C++/Qt/QDialog | QDialog]]&lt;br /&gt;
* [[C++/Qt/QDir | QDir]]&lt;br /&gt;
* [[C++/Qt/QDirModel | QDirModel]]&lt;br /&gt;
* [[C++/Qt/QDockWidget | QDockWidget]]&lt;br /&gt;
* [[C++/Qt/QDomDocument | QDomDocument]]&lt;br /&gt;
* [[C++/Qt/QDomElement | QDomElement]]&lt;br /&gt;
* [[C++/Qt/QDomNode | QDomNode]]&lt;br /&gt;
* [[C++/Qt/QDoubleValidator | QDoubleValidator]]&lt;br /&gt;
* [[C++/Qt/QDrive | QDrive]]&lt;br /&gt;
* [[C++/Qt/QEvent | QEvent]]&lt;br /&gt;
* [[C++/Qt/QFile | QFile]]&lt;br /&gt;
* [[C++/Qt/QFileDialog | QFileDialog]]&lt;br /&gt;
* [[C++/Qt/QFileInfo | QFileInfo]]&lt;br /&gt;
* [[C++/Qt/QFocusEvent | QFocusEvent]]&lt;br /&gt;
* [[C++/Qt/QFrame | QFrame]]&lt;br /&gt;
* [[C++/Qt/QFtp | QFtp]]&lt;br /&gt;
* [[C++/Qt/QGraphicsItem | QGraphicsItem]]&lt;br /&gt;
* [[C++/Qt/QGraphicsPolygonItem | QGraphicsPolygonItem]]&lt;br /&gt;
* [[C++/Qt/QGraphicsRectItem | QGraphicsRectItem]]&lt;br /&gt;
* [[C++/Qt/QGraphicsView | QGraphicsView]]&lt;br /&gt;
* [[C++/Qt/QGridLayout | QGridLayout]]&lt;br /&gt;
* [[C++/Qt/QGroupBox | QGroupBox]]&lt;br /&gt;
* [[C++/Qt/QHBoxLayout | QHBoxLayout]]&lt;br /&gt;
* [[C++/Qt/QHash | QHash]]&lt;br /&gt;
* [[C++/Qt/QImage | QImage]]&lt;br /&gt;
* [[C++/Qt/QImageWriter | QImageWriter]]&lt;br /&gt;
* [[C++/Qt/QInputDialog | QInputDialog]]&lt;br /&gt;
* [[C++/Qt/QKeyEvent | QKeyEvent]]&lt;br /&gt;
* [[C++/Qt/QLCDNumber | QLCDNumber]]&lt;br /&gt;
* [[C++/Qt/QLabel | QLabel]]&lt;br /&gt;
* [[C++/Qt/QLayout | QLayout]]&lt;br /&gt;
* [[C++/Qt/QLineEdit | QLineEdit]]&lt;br /&gt;
* [[C++/Qt/QLinearGradient | QLinearGradient]]&lt;br /&gt;
* [[C++/Qt/QList | QList]]&lt;br /&gt;
* [[C++/Qt/QListIterator | QListIterator]]&lt;br /&gt;
* [[C++/Qt/QListView | QListView]]&lt;br /&gt;
* [[C++/Qt/QListWidget | QListWidget]]&lt;br /&gt;
* [[C++/Qt/QListWidgetItem | QListWidgetItem]]&lt;br /&gt;
* [[C++/Qt/QMap | QMap]]&lt;br /&gt;
* [[C++/Qt/QMenu | QMenu]]&lt;br /&gt;
* [[C++/Qt/QMessageBox | QMessageBox]]&lt;br /&gt;
* [[C++/Qt/QMouseEvent | QMouseEvent]]&lt;br /&gt;
* [[C++/Qt/QMovie | QMovie]]&lt;br /&gt;
* [[C++/Qt/QMultiHash | QMultiHash]]&lt;br /&gt;
* [[C++/Qt/QMultiMap | QMultiMap]]&lt;br /&gt;
* [[C++/Qt/QMutableIterators | QMutableIterators]]&lt;br /&gt;
* [[C++/Qt/QMutableListIterator | QMutableListIterator]]&lt;br /&gt;
* [[C++/Qt/QMutexLocker | QMutexLocker]]&lt;br /&gt;
* [[C++/Qt/QNetworkAccessManager | QNetworkAccessManager]]&lt;br /&gt;
* [[C++/Qt/QObject | QObject]]&lt;br /&gt;
* [[C++/Qt/QPainter | QPainter]]&lt;br /&gt;
* [[C++/Qt/QPalette | QPalette]]&lt;br /&gt;
* [[C++/Qt/QPen | QPen]]&lt;br /&gt;
* [[C++/Qt/QPixmap | QPixmap]]&lt;br /&gt;
* [[C++/Qt/QPlainTextEdit | QPlainTextEdit]]&lt;br /&gt;
* [[C++/Qt/QPointer | QPointer]]&lt;br /&gt;
* [[C++/Qt/QPrintDialog | QPrintDialog]]&lt;br /&gt;
* [[C++/Qt/QPrinter | QPrinter]]&lt;br /&gt;
* [[C++/Qt/QProcess | QProcess]]&lt;br /&gt;
* [[C++/Qt/QProgressBar | QProgressBar]]&lt;br /&gt;
* [[C++/Qt/QPushButton | QPushButton]]&lt;br /&gt;
* [[C++/Qt/QQueue | QQueue]]&lt;br /&gt;
* [[C++/Qt/QRadialGradient | QRadialGradient]]&lt;br /&gt;
* [[C++/Qt/QRadioButton | QRadioButton]]&lt;br /&gt;
* [[C++/Qt/QReadWriteLock | QReadWriteLock]]&lt;br /&gt;
* [[C++/Qt/QRegExp | QRegExp]]&lt;br /&gt;
* [[C++/Qt/QRegExpValidator | QRegExpValidator]]&lt;br /&gt;
* [[C++/Qt/QScriptEngine | QScriptEngine]]&lt;br /&gt;
* [[C++/Qt/QSemaphore | QSemaphore]]&lt;br /&gt;
* [[C++/Qt/QSet | QSet]]&lt;br /&gt;
* [[C++/Qt/QSlider | QSlider]]&lt;br /&gt;
* [[C++/Qt/QSortFilterProxyModel | QSortFilterProxyModel]]&lt;br /&gt;
* [[C++/Qt/QSpinBox | QSpinBox]]&lt;br /&gt;
* [[C++/Qt/QSplashScreen | QSplashScreen]]&lt;br /&gt;
* [[C++/Qt/QSplitter | QSplitter]]&lt;br /&gt;
* [[C++/Qt/QSqlDatabase | QSqlDatabase]]&lt;br /&gt;
* [[C++/Qt/QSqlRelationalTableModel | QSqlRelationalTableModel]]&lt;br /&gt;
* [[C++/Qt/QSqlTableModel | QSqlTableModel]]&lt;br /&gt;
* [[C++/Qt/QStack | QStack]]&lt;br /&gt;
* [[C++/Qt/QStackedLayout | QStackedLayout]]&lt;br /&gt;
* [[C++/Qt/QStackedWidget | QStackedWidget]]&lt;br /&gt;
* [[C++/Qt/QStandardItem | QStandardItem]]&lt;br /&gt;
* [[C++/Qt/QStandardItemModel | QStandardItemModel]]&lt;br /&gt;
* [[C++/Qt/QStatusBar | QStatusBar]]&lt;br /&gt;
* [[C++/Qt/QString | QString]]&lt;br /&gt;
* [[C++/Qt/QStringList | QStringList]]&lt;br /&gt;
* [[C++/Qt/QStringListModel | QStringListModel]]&lt;br /&gt;
* [[C++/Qt/QStyle | QStyle]]&lt;br /&gt;
* [[C++/Qt/QSvgWidget | QSvgWidget]]&lt;br /&gt;
* [[C++/Qt/QSystemTrayIcon | QSystemTrayIcon]]&lt;br /&gt;
* [[C++/Qt/QTabWidget | QTabWidget]]&lt;br /&gt;
* [[C++/Qt/QTableView | QTableView]]&lt;br /&gt;
* [[C++/Qt/QTableWidget | QTableWidget]]&lt;br /&gt;
* [[C++/Qt/QTabletEvent | QTabletEvent]]&lt;br /&gt;
* [[C++/Qt/QTcpServer | QTcpServer]]&lt;br /&gt;
* [[C++/Qt/QTcpSocket | QTcpSocket]]&lt;br /&gt;
* [[C++/Qt/QTest | QTest]]&lt;br /&gt;
* [[C++/Qt/QTextBlockFormat | QTextBlockFormat]]&lt;br /&gt;
* [[C++/Qt/QTextBrowser | QTextBrowser]]&lt;br /&gt;
* [[C++/Qt/QTextCharFormat | QTextCharFormat]]&lt;br /&gt;
* [[C++/Qt/QTextCursor | QTextCursor]]&lt;br /&gt;
* [[C++/Qt/QTextDocument | QTextDocument]]&lt;br /&gt;
* [[C++/Qt/QTextEdit | QTextEdit]]&lt;br /&gt;
* [[C++/Qt/QTextFrame | QTextFrame]]&lt;br /&gt;
* [[C++/Qt/QTextImageFormat | QTextImageFormat]]&lt;br /&gt;
* [[C++/Qt/QTextList | QTextList]]&lt;br /&gt;
* [[C++/Qt/QTextStream | QTextStream]]&lt;br /&gt;
* [[C++/Qt/QTextTableFormat | QTextTableFormat]]&lt;br /&gt;
* [[C++/Qt/QThread | QThread]]&lt;br /&gt;
* [[C++/Qt/QTime | QTime]]&lt;br /&gt;
* [[C++/Qt/QTimeLine | QTimeLine]]&lt;br /&gt;
* [[C++/Qt/QTimer | QTimer]]&lt;br /&gt;
* [[C++/Qt/QToolBar | QToolBar]]&lt;br /&gt;
* [[C++/Qt/QTranslator | QTranslator]]&lt;br /&gt;
* [[C++/Qt/QTreeView | QTreeView]]&lt;br /&gt;
* [[C++/Qt/QTreeWidget | QTreeWidget]]&lt;br /&gt;
* [[C++/Qt/QTreeWidgetItem | QTreeWidgetItem]]&lt;br /&gt;
* [[C++/Qt/QUdpSocket | QUdpSocket]]&lt;br /&gt;
* [[C++/Qt/QUiLoader | QUiLoader]]&lt;br /&gt;
* [[C++/Qt/QVBoxLayout | QVBoxLayout]]&lt;br /&gt;
* [[C++/Qt/QVector | QVector]]&lt;br /&gt;
* [[C++/Qt/QWhatsThis | QWhatsThis]]&lt;br /&gt;
* [[C++/Qt/QWidget | QWidget]]&lt;br /&gt;
* [[C++/Qt/QWindowsStyle | QWindowsStyle]]&lt;br /&gt;
* [[C++/Qt/QWizard | QWizard]]&lt;br /&gt;
* [[C++/Qt/QX11EmbedContainer | QX11EmbedContainer]]&lt;br /&gt;
* [[C++/Qt/QX11EmbedWidget | QX11EmbedWidget]]&lt;br /&gt;
* [[C++/Qt/QXmlDefaultHandler | QXmlDefaultHandler]]&lt;br /&gt;
* [[C++/Qt/QXmlStreamWriter | QXmlStreamWriter]]&lt;br /&gt;
* [[C++/Qt/Signal | Signal]]&lt;br /&gt;
* [[C++/Qt/Sqlite | Sqlite]]&lt;br /&gt;
* [[C++/Qt/ToolTip | ToolTip]]&lt;br /&gt;
* [[C++/Qt/Window | Window]]&lt;br /&gt;
* [[C++/Qt/foreach | foreach]]&lt;br /&gt;
* [[C++/Qt/qBinaryFind | qBinaryFind]]&lt;br /&gt;
* [[C++/Qt/qCopyBackward | qCopyBackward]]&lt;br /&gt;
* [[C++/Qt/qDebug | qDebug]]&lt;br /&gt;
* [[C++/Qt/qLowerBound | qLowerBound]]&lt;br /&gt;
* [[C++/Qt/qMin | qMin]]&lt;br /&gt;
* [[C++/Qt/qSort | qSort]]&lt;br /&gt;
&lt;br /&gt;
==character painter widget==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
/****************************************************************************&lt;br /&gt;
**&lt;br /&gt;
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br /&gt;
** All rights reserved.&lt;br /&gt;
** Contact: Nokia Corporation (qt-info@nokia.com)&lt;br /&gt;
**&lt;br /&gt;
** This file is part of the examples of the Qt Toolkit.&lt;br /&gt;
**&lt;br /&gt;
** $QT_BEGIN_LICENSE:LGPL$&lt;br /&gt;
** Commercial Usage&lt;br /&gt;
** Licensees holding valid Qt Commercial licenses may use this file in&lt;br /&gt;
** accordance with the Qt Commercial License Agreement provided with the&lt;br /&gt;
** Software or, alternatively, in accordance with the terms contained in&lt;br /&gt;
** a written agreement between you and Nokia.&lt;br /&gt;
**&lt;br /&gt;
** GNU Lesser General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU Lesser&lt;br /&gt;
** General Public License version 2.1 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.LGPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU Lesser General Public License version 2.1 requirements&lt;br /&gt;
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.&lt;br /&gt;
**&lt;br /&gt;
** In addition, as a special exception, Nokia gives you certain additional&lt;br /&gt;
** rights.  These rights are described in the Nokia Qt LGPL Exception&lt;br /&gt;
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.&lt;br /&gt;
**&lt;br /&gt;
** GNU General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU&lt;br /&gt;
** General Public License version 3.0 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.GPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU General Public License version 3.0 requirements will be&lt;br /&gt;
** met: http://www.gnu.org/copyleft/gpl.html.&lt;br /&gt;
**&lt;br /&gt;
** If you have questions regarding the use of this file, please contact&lt;br /&gt;
** Nokia at qt-info@nokia.com.&lt;br /&gt;
** $QT_END_LICENSE$&lt;br /&gt;
**&lt;br /&gt;
****************************************************************************/&lt;br /&gt;
#ifndef CHARACTERWIDGET_H&lt;br /&gt;
#define CHARACTERWIDGET_H&lt;br /&gt;
#include &amp;lt;QFont&amp;gt;&lt;br /&gt;
#include &amp;lt;QPoint&amp;gt;&lt;br /&gt;
#include &amp;lt;QSize&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
#include &amp;lt;QWidget&amp;gt;&lt;br /&gt;
QT_BEGIN_NAMESPACE&lt;br /&gt;
class QMouseEvent;&lt;br /&gt;
class QPaintEvent;&lt;br /&gt;
QT_END_NAMESPACE&lt;br /&gt;
&lt;br /&gt;
class CharacterWidget : public QWidget&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    CharacterWidget(QWidget *parent = 0);&lt;br /&gt;
    QSize sizeHint() const;&lt;br /&gt;
public slots:&lt;br /&gt;
    void updateFont(const QFont &amp;amp;font);&lt;br /&gt;
    void updateSize(const QString &amp;amp;fontSize);&lt;br /&gt;
    void updateStyle(const QString &amp;amp;fontStyle);&lt;br /&gt;
    void updateFontMerging(bool enable);&lt;br /&gt;
signals:&lt;br /&gt;
    void characterSelected(const QString &amp;amp;character);&lt;br /&gt;
protected:&lt;br /&gt;
    void mouseMoveEvent(QMouseEvent *event);&lt;br /&gt;
    void mousePressEvent(QMouseEvent *event);&lt;br /&gt;
    void paintEvent(QPaintEvent *event);&lt;br /&gt;
private:&lt;br /&gt;
    QFont displayFont;&lt;br /&gt;
    int columns;&lt;br /&gt;
    int lastKey;&lt;br /&gt;
    int squareSize;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
#include &amp;quot;characterwidget.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CharacterWidget::CharacterWidget(QWidget *parent)&lt;br /&gt;
    : QWidget(parent)&lt;br /&gt;
{&lt;br /&gt;
    squareSize = 24;&lt;br /&gt;
    columns = 16;&lt;br /&gt;
    lastKey = -1;&lt;br /&gt;
    setMouseTracking(true);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::updateFont(const QFont &amp;amp;font)&lt;br /&gt;
{&lt;br /&gt;
    displayFont.setFamily(font.family());&lt;br /&gt;
    squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);&lt;br /&gt;
    adjustSize();&lt;br /&gt;
    update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::updateSize(const QString &amp;amp;fontSize)&lt;br /&gt;
{&lt;br /&gt;
    displayFont.setPointSize(fontSize.toInt());&lt;br /&gt;
    squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);&lt;br /&gt;
    adjustSize();&lt;br /&gt;
    update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::updateStyle(const QString &amp;amp;fontStyle)&lt;br /&gt;
{&lt;br /&gt;
    QFontDatabase fontDatabase;&lt;br /&gt;
    const QFont::StyleStrategy oldStrategy = displayFont.styleStrategy();&lt;br /&gt;
    displayFont = fontDatabase.font(displayFont.family(), fontStyle, displayFont.pointSize());&lt;br /&gt;
    displayFont.setStyleStrategy(oldStrategy);&lt;br /&gt;
    squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);&lt;br /&gt;
    adjustSize();&lt;br /&gt;
    update();&lt;br /&gt;
}&lt;br /&gt;
void CharacterWidget::updateFontMerging(bool enable)&lt;br /&gt;
{&lt;br /&gt;
    if (enable)&lt;br /&gt;
        displayFont.setStyleStrategy(QFont::PreferDefault);&lt;br /&gt;
    else&lt;br /&gt;
        displayFont.setStyleStrategy(QFont::NoFontMerging);&lt;br /&gt;
    adjustSize();&lt;br /&gt;
    update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
QSize CharacterWidget::sizeHint() const&lt;br /&gt;
{&lt;br /&gt;
    return QSize(columns*squareSize, (65536/columns)*squareSize);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::mouseMoveEvent(QMouseEvent *event)&lt;br /&gt;
{&lt;br /&gt;
    QPoint widgetPosition = mapFromGlobal(event-&amp;gt;globalPos());&lt;br /&gt;
    uint key = (widgetPosition.y()/squareSize)*columns + widgetPosition.x()/squareSize;&lt;br /&gt;
    QString text = QString::fromLatin1(&amp;quot;&amp;lt;p&amp;gt;Character: &amp;lt;span style=\&amp;quot;font-size: 24pt; font-family: %1\&amp;quot;&amp;gt;&amp;quot;).arg(displayFont.family())&lt;br /&gt;
                  + QChar(key)&lt;br /&gt;
                  + QString::fromLatin1(&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;p&amp;gt;Value: 0x&amp;quot;)&lt;br /&gt;
                  + QString::number(key, 16);&lt;br /&gt;
    QToolTip::showText(event-&amp;gt;globalPos(), text, this);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::mousePressEvent(QMouseEvent *event)&lt;br /&gt;
{&lt;br /&gt;
    if (event-&amp;gt;button() == Qt::LeftButton) {&lt;br /&gt;
        lastKey = (event-&amp;gt;y()/squareSize)*columns + event-&amp;gt;x()/squareSize;&lt;br /&gt;
        if (QChar(lastKey).category() != QChar::NoCategory)&lt;br /&gt;
            emit characterSelected(QString(QChar(lastKey)));&lt;br /&gt;
        update();&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
        QWidget::mousePressEvent(event);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CharacterWidget::paintEvent(QPaintEvent *event)&lt;br /&gt;
{&lt;br /&gt;
    QPainter painter(this);&lt;br /&gt;
    painter.fillRect(event-&amp;gt;rect(), QBrush(Qt::white));&lt;br /&gt;
    painter.setFont(displayFont);&lt;br /&gt;
&lt;br /&gt;
    QRect redrawRect = event-&amp;gt;rect();&lt;br /&gt;
    int beginRow = redrawRect.top()/squareSize;&lt;br /&gt;
    int endRow = redrawRect.bottom()/squareSize;&lt;br /&gt;
    int beginColumn = redrawRect.left()/squareSize;&lt;br /&gt;
    int endColumn = redrawRect.right()/squareSize;&lt;br /&gt;
&lt;br /&gt;
    painter.setPen(QPen(Qt::gray));&lt;br /&gt;
    for (int row = beginRow; row &amp;lt;= endRow; ++row) {&lt;br /&gt;
        for (int column = beginColumn; column &amp;lt;= endColumn; ++column) {&lt;br /&gt;
            painter.drawRect(column*squareSize, row*squareSize, squareSize, squareSize);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    QFontMetrics fontMetrics(displayFont);&lt;br /&gt;
    painter.setPen(QPen(Qt::black));&lt;br /&gt;
    for (int row = beginRow; row &amp;lt;= endRow; ++row) {&lt;br /&gt;
        for (int column = beginColumn; column &amp;lt;= endColumn; ++column) {&lt;br /&gt;
            int key = row*columns + column;&lt;br /&gt;
            painter.setClipRect(column*squareSize, row*squareSize, squareSize, squareSize);&lt;br /&gt;
            if (key == lastKey)&lt;br /&gt;
                painter.fillRect(column*squareSize + 1, row*squareSize + 1, squareSize, squareSize, QBrush(Qt::red));&lt;br /&gt;
            painter.drawText(column*squareSize + (squareSize / 2) - fontMetrics.width(QChar(key))/2,&lt;br /&gt;
                             row*squareSize + 4 + fontMetrics.ascent(),&lt;br /&gt;
                             QString(QChar(key)));&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#ifndef MAINWINDOW_H&lt;br /&gt;
#define MAINWINDOW_H&lt;br /&gt;
#include &amp;lt;QMainWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
QT_BEGIN_NAMESPACE&lt;br /&gt;
class QClipboard;&lt;br /&gt;
class QComboBox;&lt;br /&gt;
class QFontComboBox;&lt;br /&gt;
class QLineEdit;&lt;br /&gt;
class QScrollArea;&lt;br /&gt;
class QCheckBox;&lt;br /&gt;
QT_END_NAMESPACE&lt;br /&gt;
class CharacterWidget;&lt;br /&gt;
&lt;br /&gt;
class MainWindow : public QMainWindow&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    MainWindow();&lt;br /&gt;
public slots:&lt;br /&gt;
    void findStyles(const QFont &amp;amp;font);&lt;br /&gt;
    void findSizes(const QFont &amp;amp;font);&lt;br /&gt;
    void insertCharacter(const QString &amp;amp;character);&lt;br /&gt;
    void updateClipboard();&lt;br /&gt;
private:&lt;br /&gt;
    CharacterWidget *characterWidget;&lt;br /&gt;
    QClipboard *clipboard;&lt;br /&gt;
    QComboBox *styleCombo;&lt;br /&gt;
    QComboBox *sizeCombo;&lt;br /&gt;
    QFontComboBox *fontCombo;&lt;br /&gt;
    QLineEdit *lineEdit;&lt;br /&gt;
    QScrollArea *scrollArea;&lt;br /&gt;
    QCheckBox *fontMerging;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
#include &amp;quot;characterwidget.h&amp;quot;&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MainWindow::MainWindow()&lt;br /&gt;
{&lt;br /&gt;
    QWidget *centralWidget = new QWidget;&lt;br /&gt;
    QLabel *fontLabel = new QLabel(tr(&amp;quot;Font:&amp;quot;));&lt;br /&gt;
    fontCombo = new QFontComboBox;&lt;br /&gt;
    QLabel *sizeLabel = new QLabel(tr(&amp;quot;Size:&amp;quot;));&lt;br /&gt;
    sizeCombo = new QComboBox;&lt;br /&gt;
    QLabel *styleLabel = new QLabel(tr(&amp;quot;Style:&amp;quot;));&lt;br /&gt;
    styleCombo = new QComboBox;&lt;br /&gt;
    QLabel *fontMergingLabel = new QLabel(tr(&amp;quot;Automatic Font Merging:&amp;quot;));&lt;br /&gt;
    fontMerging = new QCheckBox;&lt;br /&gt;
    fontMerging-&amp;gt;setChecked(true);&lt;br /&gt;
    scrollArea = new QScrollArea;&lt;br /&gt;
    characterWidget = new CharacterWidget;&lt;br /&gt;
    scrollArea-&amp;gt;setWidget(characterWidget);&lt;br /&gt;
&lt;br /&gt;
    findStyles(fontCombo-&amp;gt;currentFont());&lt;br /&gt;
    findSizes(fontCombo-&amp;gt;currentFont());&lt;br /&gt;
&lt;br /&gt;
    lineEdit = new QLineEdit;&lt;br /&gt;
    QPushButton *clipboardButton = new QPushButton(tr(&amp;quot;&amp;amp;To clipboard&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    clipboard = QApplication::clipboard();&lt;br /&gt;
&lt;br /&gt;
    connect(fontCombo, SIGNAL(currentFontChanged(const QFont &amp;amp;)),&lt;br /&gt;
            this, SLOT(findStyles(const QFont &amp;amp;)));&lt;br /&gt;
    connect(fontCombo, SIGNAL(currentFontChanged(const QFont &amp;amp;)),&lt;br /&gt;
            this, SLOT(findSizes(const QFont &amp;amp;)));&lt;br /&gt;
    connect(fontCombo, SIGNAL(currentFontChanged(const QFont &amp;amp;)),&lt;br /&gt;
            characterWidget, SLOT(updateFont(const QFont &amp;amp;)));&lt;br /&gt;
    connect(sizeCombo, SIGNAL(currentIndexChanged(const QString &amp;amp;)),&lt;br /&gt;
            characterWidget, SLOT(updateSize(const QString &amp;amp;)));&lt;br /&gt;
    connect(styleCombo, SIGNAL(currentIndexChanged(const QString &amp;amp;)),&lt;br /&gt;
            characterWidget, SLOT(updateStyle(const QString &amp;amp;)));&lt;br /&gt;
 &lt;br /&gt;
    connect(characterWidget, SIGNAL(characterSelected(const QString &amp;amp;)),&lt;br /&gt;
            this, SLOT(insertCharacter(const QString &amp;amp;)));&lt;br /&gt;
    connect(clipboardButton, SIGNAL(clicked()), this, SLOT(updateClipboard()));&lt;br /&gt;
    connect(fontMerging, SIGNAL(toggled(bool)), characterWidget, SLOT(updateFontMerging(bool)));&lt;br /&gt;
&lt;br /&gt;
    QHBoxLayout *controlsLayout = new QHBoxLayout;&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(fontLabel);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(fontCombo, 1);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(sizeLabel);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(sizeCombo, 1);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(styleLabel);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(styleCombo, 1);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(fontMergingLabel);&lt;br /&gt;
    controlsLayout-&amp;gt;addWidget(fontMerging, 1);&lt;br /&gt;
    controlsLayout-&amp;gt;addStretch(1);&lt;br /&gt;
    QHBoxLayout *lineLayout = new QHBoxLayout;&lt;br /&gt;
    lineLayout-&amp;gt;addWidget(lineEdit, 1);&lt;br /&gt;
    lineLayout-&amp;gt;addSpacing(12);&lt;br /&gt;
    lineLayout-&amp;gt;addWidget(clipboardButton);&lt;br /&gt;
    QVBoxLayout *centralLayout = new QVBoxLayout;&lt;br /&gt;
    centralLayout-&amp;gt;addLayout(controlsLayout);&lt;br /&gt;
    centralLayout-&amp;gt;addWidget(scrollArea, 1);&lt;br /&gt;
    centralLayout-&amp;gt;addSpacing(4);&lt;br /&gt;
    centralLayout-&amp;gt;addLayout(lineLayout);&lt;br /&gt;
    centralWidget-&amp;gt;setLayout(centralLayout);&lt;br /&gt;
    setCentralWidget(centralWidget);&lt;br /&gt;
    setWindowTitle(tr(&amp;quot;Character Map&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::findStyles(const QFont &amp;amp;font)&lt;br /&gt;
{&lt;br /&gt;
    QFontDatabase fontDatabase;&lt;br /&gt;
    QString currentItem = styleCombo-&amp;gt;currentText();&lt;br /&gt;
    styleCombo-&amp;gt;clear();&lt;br /&gt;
&lt;br /&gt;
    QString style;&lt;br /&gt;
    foreach (style, fontDatabase.styles(font.family()))&lt;br /&gt;
        styleCombo-&amp;gt;addItem(style);&lt;br /&gt;
    int styleIndex = styleCombo-&amp;gt;findText(currentItem);&lt;br /&gt;
    if (styleIndex == -1)&lt;br /&gt;
        styleCombo-&amp;gt;setCurrentIndex(0);&lt;br /&gt;
    else&lt;br /&gt;
        styleCombo-&amp;gt;setCurrentIndex(styleIndex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::findSizes(const QFont &amp;amp;font)&lt;br /&gt;
{&lt;br /&gt;
    QFontDatabase fontDatabase;&lt;br /&gt;
    QString currentSize = sizeCombo-&amp;gt;currentText();&lt;br /&gt;
    sizeCombo-&amp;gt;blockSignals(true);&lt;br /&gt;
    sizeCombo-&amp;gt;clear();&lt;br /&gt;
    int size;&lt;br /&gt;
    if(fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font))) {&lt;br /&gt;
        foreach(size, QFontDatabase::standardSizes()) {&lt;br /&gt;
            sizeCombo-&amp;gt;addItem(QVariant(size).toString());&lt;br /&gt;
            sizeCombo-&amp;gt;setEditable(true);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        foreach(size, fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font))) {&lt;br /&gt;
            sizeCombo-&amp;gt;addItem(QVariant(size).toString());&lt;br /&gt;
            sizeCombo-&amp;gt;setEditable(false);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    sizeCombo-&amp;gt;blockSignals(false);&lt;br /&gt;
    int sizeIndex = sizeCombo-&amp;gt;findText(currentSize);&lt;br /&gt;
    if(sizeIndex == -1)&lt;br /&gt;
        sizeCombo-&amp;gt;setCurrentIndex(qMax(0, sizeCombo-&amp;gt;count() / 3));&lt;br /&gt;
    else&lt;br /&gt;
        sizeCombo-&amp;gt;setCurrentIndex(sizeIndex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::insertCharacter(const QString &amp;amp;character)&lt;br /&gt;
{&lt;br /&gt;
    lineEdit-&amp;gt;insert(character);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::updateClipboard()&lt;br /&gt;
{&lt;br /&gt;
    clipboard-&amp;gt;setText(lineEdit-&amp;gt;text(), QClipboard::Clipboard);&lt;br /&gt;
    clipboard-&amp;gt;setText(lineEdit-&amp;gt;text(), QClipboard::Selection);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    QApplication app(argc, argv);&lt;br /&gt;
    MainWindow window;&lt;br /&gt;
    window.show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create QFont==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
Foundations of Qt Development\Chapter07\paths\main.cpp&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;QPainter&amp;gt;&lt;br /&gt;
#include &amp;lt;QPainterPath&amp;gt;&lt;br /&gt;
#include &amp;lt;QPixmap&amp;gt;&lt;br /&gt;
int main( int argc, char **argv )&lt;br /&gt;
{&lt;br /&gt;
  QApplication app( argc, argv );&lt;br /&gt;
  &lt;br /&gt;
  QPixmap pixmap( 200, 200 );&lt;br /&gt;
  pixmap.fill( Qt::white );&lt;br /&gt;
    &lt;br /&gt;
  QPainterPath path;&lt;br /&gt;
  &lt;br /&gt;
  path.addEllipse( 80, 80, 80, 80 );&lt;br /&gt;
  &lt;br /&gt;
  path.moveTo( 120, 120 );&lt;br /&gt;
  path.lineTo( 120, 40 );&lt;br /&gt;
  path.arcTo( 40, 40, 160, 160, 90, 90 );&lt;br /&gt;
  path.lineTo( 120, 120 );&lt;br /&gt;
  &lt;br /&gt;
  QFont font = QApplication::font();&lt;br /&gt;
  font.setPixelSize( 40 );&lt;br /&gt;
  &lt;br /&gt;
  path.addText( 20, 180, font, &amp;quot;Path&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  QPainter painter( &amp;amp;pixmap );&lt;br /&gt;
  painter.setRenderHint( QPainter::Antialiasing );&lt;br /&gt;
  &lt;br /&gt;
  painter.setPen( Qt::black );&lt;br /&gt;
  painter.setBrush( Qt::gray );&lt;br /&gt;
  &lt;br /&gt;
  painter.drawPath( path );&lt;br /&gt;
  &lt;br /&gt;
  pixmap.save( &amp;quot;path.png&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Font dialog demo==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Chapter03\colorandfont\main.cpp&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;QFontDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;QColorDialog&amp;gt;&lt;br /&gt;
class Tester : public QWidget&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
  void doColor()&lt;br /&gt;
  {&lt;br /&gt;
    QColor color = QColorDialog::getColor(Qt::yellow, this );&lt;br /&gt;
    if( color.isValid() )&lt;br /&gt;
    {&lt;br /&gt;
      qDebug( &amp;quot;ok&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  void doFont()&lt;br /&gt;
  {&lt;br /&gt;
    bool ok;&lt;br /&gt;
    QFont font = QFontDialog::getFont( &lt;br /&gt;
                    &amp;amp;ok, &lt;br /&gt;
                    QFont( &amp;quot;Arial&amp;quot;, 18 ), &lt;br /&gt;
                    this, &lt;br /&gt;
                    tr(&amp;quot;Pick a font&amp;quot;) );&lt;br /&gt;
    if( ok )&lt;br /&gt;
    {&lt;br /&gt;
      qDebug( &amp;quot;ok&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
int main( int argc, char **argv )&lt;br /&gt;
{&lt;br /&gt;
  QApplication app( argc, argv );&lt;br /&gt;
  &lt;br /&gt;
  Tester t;&lt;br /&gt;
  t.doColor();&lt;br /&gt;
  t.doFont();&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==plain text layout==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
/****************************************************************************&lt;br /&gt;
**&lt;br /&gt;
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br /&gt;
** All rights reserved.&lt;br /&gt;
** Contact: Nokia Corporation (qt-info@nokia.com)&lt;br /&gt;
**&lt;br /&gt;
** This file is part of the documentation of the Qt Toolkit.&lt;br /&gt;
**&lt;br /&gt;
** $QT_BEGIN_LICENSE:LGPL$&lt;br /&gt;
** Commercial Usage&lt;br /&gt;
** Licensees holding valid Qt Commercial licenses may use this file in&lt;br /&gt;
** accordance with the Qt Commercial License Agreement provided with the&lt;br /&gt;
** Software or, alternatively, in accordance with the terms contained in&lt;br /&gt;
** a written agreement between you and Nokia.&lt;br /&gt;
**&lt;br /&gt;
** GNU Lesser General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU Lesser&lt;br /&gt;
** General Public License version 2.1 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.LGPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU Lesser General Public License version 2.1 requirements&lt;br /&gt;
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.&lt;br /&gt;
**&lt;br /&gt;
** In addition, as a special exception, Nokia gives you certain additional&lt;br /&gt;
** rights.  These rights are described in the Nokia Qt LGPL Exception&lt;br /&gt;
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.&lt;br /&gt;
**&lt;br /&gt;
** GNU General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU&lt;br /&gt;
** General Public License version 3.0 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.GPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU General Public License version 3.0 requirements will be&lt;br /&gt;
** met: http://www.gnu.org/copyleft/gpl.html.&lt;br /&gt;
**&lt;br /&gt;
** If you have questions regarding the use of this file, please contact&lt;br /&gt;
** Nokia at qt-info@nokia.com.&lt;br /&gt;
** $QT_END_LICENSE$&lt;br /&gt;
**&lt;br /&gt;
****************************************************************************/&lt;br /&gt;
#ifndef WINDOW_H&lt;br /&gt;
#define WINDOW_H&lt;br /&gt;
#include &amp;lt;QWidget&amp;gt;&lt;br /&gt;
class Window : public QWidget&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    Window(QWidget *parent = 0);&lt;br /&gt;
protected:&lt;br /&gt;
    void paintEvent(QPaintEvent *event);&lt;br /&gt;
private:&lt;br /&gt;
    QFont font;&lt;br /&gt;
    QString text;&lt;br /&gt;
};&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;quot;window.h&amp;quot;&lt;br /&gt;
Window::Window(QWidget *parent)&lt;br /&gt;
    : QWidget(parent)&lt;br /&gt;
{&lt;br /&gt;
    text = QString(&amp;quot;Support for text rendering and layout in Qt 4 has been &amp;quot;&lt;br /&gt;
                   &amp;quot;redesigned around a system that allows textual content to &amp;quot;&lt;br /&gt;
                   &amp;quot;be represented in a more flexible way than was possible &amp;quot;&lt;br /&gt;
                   &amp;quot;with Qt 3. Qt 4 also provides a more convenient &amp;quot;&lt;br /&gt;
                   &amp;quot;programming interface for editing documents. These &amp;quot;&lt;br /&gt;
                   &amp;quot;improvements are made available through a reimplementation &amp;quot;&lt;br /&gt;
                   &amp;quot;of the existing text rendering engine, and the &amp;quot;&lt;br /&gt;
                   &amp;quot;introduction of several new classes. &amp;quot;&lt;br /&gt;
                   &amp;quot;See the relevant module overview for a detailed discussion &amp;quot;&lt;br /&gt;
                   &amp;quot;of this framework. The following sections provide a brief &amp;quot;&lt;br /&gt;
                   &amp;quot;overview of the main concepts behind Scribe.&amp;quot;);&lt;br /&gt;
    setWindowTitle(tr(&amp;quot;Plain Text Layout&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
void Window::paintEvent(QPaintEvent *event)&lt;br /&gt;
{&lt;br /&gt;
    QTextLayout textLayout(text, font);&lt;br /&gt;
    qreal margin = 10;&lt;br /&gt;
    qreal radius = qMin(width()/2.0, height()/2.0) - margin;&lt;br /&gt;
    QFontMetrics fm(font);&lt;br /&gt;
    qreal lineHeight = fm.height();&lt;br /&gt;
    qreal y = 0;&lt;br /&gt;
    textLayout.beginLayout();&lt;br /&gt;
    while (1) {&lt;br /&gt;
        // create a new line &lt;br /&gt;
        QTextLine line = textLayout.createLine();&lt;br /&gt;
        if (!line.isValid())&lt;br /&gt;
            break;&lt;br /&gt;
        qreal x1 = qMax(0.0, pow(pow(radius,2)-pow(radius-y,2), 0.5));&lt;br /&gt;
        qreal x2 = qMax(0.0, pow(pow(radius,2)-pow(radius-(y+lineHeight),2), 0.5));&lt;br /&gt;
        qreal x = qMax(x1, x2) + margin;&lt;br /&gt;
        qreal lineWidth = (width() - margin) - x;&lt;br /&gt;
        line.setLineWidth(lineWidth);&lt;br /&gt;
        line.setPosition(QPointF(x, margin+y));&lt;br /&gt;
        y += line.height();&lt;br /&gt;
    }&lt;br /&gt;
    textLayout.endLayout();&lt;br /&gt;
    QPainter painter;&lt;br /&gt;
    painter.begin(this);&lt;br /&gt;
    painter.setRenderHint(QPainter::Antialiasing);&lt;br /&gt;
    painter.fillRect(rect(), Qt::white);&lt;br /&gt;
    painter.setBrush(QBrush(Qt::black));&lt;br /&gt;
    painter.setPen(QPen(Qt::black));&lt;br /&gt;
    textLayout.draw(&amp;amp;painter, QPoint(0,0));&lt;br /&gt;
    painter.setBrush(QBrush(QColor(&amp;quot;#a6ce39&amp;quot;)));&lt;br /&gt;
    painter.setPen(QPen(Qt::black));&lt;br /&gt;
    painter.drawEllipse(QRectF(-radius, margin, 2*radius, 2*radius));&lt;br /&gt;
    painter.end();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
#include &amp;quot;window.h&amp;quot;&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    QApplication app(argc, argv);&lt;br /&gt;
    Window *window = new Window;&lt;br /&gt;
    window-&amp;gt;resize(337, 343);&lt;br /&gt;
    window-&amp;gt;show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QFontDatabase and QTreeWidget==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
/****************************************************************************&lt;br /&gt;
**&lt;br /&gt;
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;br /&gt;
** All rights reserved.&lt;br /&gt;
** Contact: Nokia Corporation (qt-info@nokia.com)&lt;br /&gt;
**&lt;br /&gt;
** This file is part of the documentation of the Qt Toolkit.&lt;br /&gt;
**&lt;br /&gt;
** $QT_BEGIN_LICENSE:LGPL$&lt;br /&gt;
** Commercial Usage&lt;br /&gt;
** Licensees holding valid Qt Commercial licenses may use this file in&lt;br /&gt;
** accordance with the Qt Commercial License Agreement provided with the&lt;br /&gt;
** Software or, alternatively, in accordance with the terms contained in&lt;br /&gt;
** a written agreement between you and Nokia.&lt;br /&gt;
**&lt;br /&gt;
** GNU Lesser General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU Lesser&lt;br /&gt;
** General Public License version 2.1 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.LGPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU Lesser General Public License version 2.1 requirements&lt;br /&gt;
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.&lt;br /&gt;
**&lt;br /&gt;
** In addition, as a special exception, Nokia gives you certain additional&lt;br /&gt;
** rights.  These rights are described in the Nokia Qt LGPL Exception&lt;br /&gt;
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.&lt;br /&gt;
**&lt;br /&gt;
** GNU General Public License Usage&lt;br /&gt;
** Alternatively, this file may be used under the terms of the GNU&lt;br /&gt;
** General Public License version 3.0 as published by the Free Software&lt;br /&gt;
** Foundation and appearing in the file LICENSE.GPL included in the&lt;br /&gt;
** packaging of this file.  Please review the following information to&lt;br /&gt;
** ensure the GNU General Public License version 3.0 requirements will be&lt;br /&gt;
** met: http://www.gnu.org/copyleft/gpl.html.&lt;br /&gt;
**&lt;br /&gt;
** If you have questions regarding the use of this file, please contact&lt;br /&gt;
** Nokia at qt-info@nokia.com.&lt;br /&gt;
** $QT_END_LICENSE$&lt;br /&gt;
**&lt;br /&gt;
****************************************************************************/&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    QApplication app(argc, argv);&lt;br /&gt;
&lt;br /&gt;
    QFontDatabase database;&lt;br /&gt;
    QTreeWidget fontTree;&lt;br /&gt;
    fontTree.setColumnCount(2);&lt;br /&gt;
    fontTree.setHeaderLabels(QStringList() &amp;lt;&amp;lt; &amp;quot;Font&amp;quot; &amp;lt;&amp;lt; &amp;quot;Smooth Sizes&amp;quot;);&lt;br /&gt;
    foreach (QString family, database.families()) {&lt;br /&gt;
        QTreeWidgetItem *familyItem = new QTreeWidgetItem(&amp;amp;fontTree);&lt;br /&gt;
        familyItem-&amp;gt;setText(0, family);&lt;br /&gt;
        foreach (QString style, database.styles(family)) {&lt;br /&gt;
            QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);&lt;br /&gt;
            styleItem-&amp;gt;setText(0, style);&lt;br /&gt;
            QString sizes;&lt;br /&gt;
            foreach (int points, database.smoothSizes(family, style))&lt;br /&gt;
                sizes += QString::number(points) + &amp;quot; &amp;quot;;&lt;br /&gt;
            styleItem-&amp;gt;setText(1, sizes.trimmed());&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    fontTree.resizeColumnToContents(0);&lt;br /&gt;
    fontTree.show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>