C++/Qt

Материал из C\C++ эксперт
Версия от 13:25, 25 мая 2010; Admin (обсуждение | вклад) (1 версия: Импорт контента...)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

character painter widget

<source lang="cpp">

/****************************************************************************

    • Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    • All rights reserved.
    • Contact: Nokia Corporation (qt-info@nokia.com)
    • This file is part of the examples of the Qt Toolkit.
    • $QT_BEGIN_LICENSE:LGPL$
    • Commercial Usage
    • Licensees holding valid Qt Commercial licenses may use this file in
    • accordance with the Qt Commercial License Agreement provided with the
    • Software or, alternatively, in accordance with the terms contained in
    • a written agreement between you and Nokia.
    • GNU Lesser General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU Lesser
    • General Public License version 2.1 as published by the Free Software
    • Foundation and appearing in the file LICENSE.LGPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU Lesser General Public License version 2.1 requirements
    • will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    • In addition, as a special exception, Nokia gives you certain additional
    • rights. These rights are described in the Nokia Qt LGPL Exception
    • version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    • GNU General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU
    • General Public License version 3.0 as published by the Free Software
    • Foundation and appearing in the file LICENSE.GPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU General Public License version 3.0 requirements will be
    • met: http://www.gnu.org/copyleft/gpl.html.
    • If you have questions regarding the use of this file, please contact
    • Nokia at qt-info@nokia.com.
    • $QT_END_LICENSE$
                                                                                                                                                        • /
  1. ifndef CHARACTERWIDGET_H
  2. define CHARACTERWIDGET_H
  3. include <QFont>
  4. include <QPoint>
  5. include <QSize>
  6. include <QString>
  7. include <QWidget>

QT_BEGIN_NAMESPACE class QMouseEvent; class QPaintEvent; QT_END_NAMESPACE

class CharacterWidget : public QWidget {

   Q_OBJECT

public:

   CharacterWidget(QWidget *parent = 0);
   QSize sizeHint() const;

public slots:

   void updateFont(const QFont &font);
   void updateSize(const QString &fontSize);
   void updateStyle(const QString &fontStyle);
   void updateFontMerging(bool enable);

signals:

   void characterSelected(const QString &character);

protected:

   void mouseMoveEvent(QMouseEvent *event);
   void mousePressEvent(QMouseEvent *event);
   void paintEvent(QPaintEvent *event);

private:

   QFont displayFont;
   int columns;
   int lastKey;
   int squareSize;

};

  1. endif


  1. include <QtGui>
  2. include "characterwidget.h"

CharacterWidget::CharacterWidget(QWidget *parent)

   : QWidget(parent)

{

   squareSize = 24;
   columns = 16;
   lastKey = -1;
   setMouseTracking(true);

}

void CharacterWidget::updateFont(const QFont &font) {

   displayFont.setFamily(font.family());
   squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);
   adjustSize();
   update();

}

void CharacterWidget::updateSize(const QString &fontSize) {

   displayFont.setPointSize(fontSize.toInt());
   squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);
   adjustSize();
   update();

}

void CharacterWidget::updateStyle(const QString &fontStyle) {

   QFontDatabase fontDatabase;
   const QFont::StyleStrategy oldStrategy = displayFont.styleStrategy();
   displayFont = fontDatabase.font(displayFont.family(), fontStyle, displayFont.pointSize());
   displayFont.setStyleStrategy(oldStrategy);
   squareSize = qMax(24, QFontMetrics(displayFont).xHeight() * 3);
   adjustSize();
   update();

} void CharacterWidget::updateFontMerging(bool enable) {

   if (enable)
       displayFont.setStyleStrategy(QFont::PreferDefault);
   else
       displayFont.setStyleStrategy(QFont::NoFontMerging);
   adjustSize();
   update();

}

QSize CharacterWidget::sizeHint() const {

   return QSize(columns*squareSize, (65536/columns)*squareSize);

}

void CharacterWidget::mouseMoveEvent(QMouseEvent *event) {

   QPoint widgetPosition = mapFromGlobal(event->globalPos());
   uint key = (widgetPosition.y()/squareSize)*columns + widgetPosition.x()/squareSize;
QString text = QString::fromLatin1("

Character: ").arg(displayFont.family()) + QChar(key) + QString::fromLatin1("<p>Value: 0x") + QString::number(key, 16); QToolTip::showText(event->globalPos(), text, this); } void CharacterWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { lastKey = (event->y()/squareSize)*columns + event->x()/squareSize; if (QChar(lastKey).category() != QChar::NoCategory) emit characterSelected(QString(QChar(lastKey))); update(); } else QWidget::mousePressEvent(event); } void CharacterWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.fillRect(event->rect(), QBrush(Qt::white)); painter.setFont(displayFont); QRect redrawRect = event->rect(); int beginRow = redrawRect.top()/squareSize; int endRow = redrawRect.bottom()/squareSize; int beginColumn = redrawRect.left()/squareSize; int endColumn = redrawRect.right()/squareSize; painter.setPen(QPen(Qt::gray)); for (int row = beginRow; row <= endRow; ++row) { for (int column = beginColumn; column <= endColumn; ++column) { painter.drawRect(column*squareSize, row*squareSize, squareSize, squareSize); } } QFontMetrics fontMetrics(displayFont); painter.setPen(QPen(Qt::black)); for (int row = beginRow; row <= endRow; ++row) { for (int column = beginColumn; column <= endColumn; ++column) { int key = row*columns + column; painter.setClipRect(column*squareSize, row*squareSize, squareSize, squareSize); if (key == lastKey) painter.fillRect(column*squareSize + 1, row*squareSize + 1, squareSize, squareSize, QBrush(Qt::red)); painter.drawText(column*squareSize + (squareSize / 2) - fontMetrics.width(QChar(key))/2, row*squareSize + 4 + fontMetrics.ascent(), QString(QChar(key))); } } }

  1. ifndef MAINWINDOW_H
  2. define MAINWINDOW_H
  3. include <QMainWindow>
  4. include <QString>
QT_BEGIN_NAMESPACE class QClipboard; class QComboBox; class QFontComboBox; class QLineEdit; class QScrollArea; class QCheckBox; QT_END_NAMESPACE class CharacterWidget; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); public slots: void findStyles(const QFont &font); void findSizes(const QFont &font); void insertCharacter(const QString &character); void updateClipboard(); private: CharacterWidget *characterWidget; QClipboard *clipboard; QComboBox *styleCombo; QComboBox *sizeCombo; QFontComboBox *fontCombo; QLineEdit *lineEdit; QScrollArea *scrollArea; QCheckBox *fontMerging; };
  1. endif
  1. include <QtGui>
  2. include "characterwidget.h"
  3. include "mainwindow.h"
MainWindow::MainWindow() { QWidget *centralWidget = new QWidget; QLabel *fontLabel = new QLabel(tr("Font:")); fontCombo = new QFontComboBox; QLabel *sizeLabel = new QLabel(tr("Size:")); sizeCombo = new QComboBox; QLabel *styleLabel = new QLabel(tr("Style:")); styleCombo = new QComboBox; QLabel *fontMergingLabel = new QLabel(tr("Automatic Font Merging:")); fontMerging = new QCheckBox; fontMerging->setChecked(true); scrollArea = new QScrollArea; characterWidget = new CharacterWidget; scrollArea->setWidget(characterWidget); findStyles(fontCombo->currentFont()); findSizes(fontCombo->currentFont()); lineEdit = new QLineEdit; QPushButton *clipboardButton = new QPushButton(tr("&To clipboard")); clipboard = QApplication::clipboard(); connect(fontCombo, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(findStyles(const QFont &))); connect(fontCombo, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(findSizes(const QFont &))); connect(fontCombo, SIGNAL(currentFontChanged(const QFont &)), characterWidget, SLOT(updateFont(const QFont &))); connect(sizeCombo, SIGNAL(currentIndexChanged(const QString &)), characterWidget, SLOT(updateSize(const QString &))); connect(styleCombo, SIGNAL(currentIndexChanged(const QString &)), characterWidget, SLOT(updateStyle(const QString &))); connect(characterWidget, SIGNAL(characterSelected(const QString &)), this, SLOT(insertCharacter(const QString &))); connect(clipboardButton, SIGNAL(clicked()), this, SLOT(updateClipboard())); connect(fontMerging, SIGNAL(toggled(bool)), characterWidget, SLOT(updateFontMerging(bool))); QHBoxLayout *controlsLayout = new QHBoxLayout; controlsLayout->addWidget(fontLabel); controlsLayout->addWidget(fontCombo, 1); controlsLayout->addWidget(sizeLabel); controlsLayout->addWidget(sizeCombo, 1); controlsLayout->addWidget(styleLabel); controlsLayout->addWidget(styleCombo, 1); controlsLayout->addWidget(fontMergingLabel); controlsLayout->addWidget(fontMerging, 1); controlsLayout->addStretch(1); QHBoxLayout *lineLayout = new QHBoxLayout; lineLayout->addWidget(lineEdit, 1); lineLayout->addSpacing(12); lineLayout->addWidget(clipboardButton); QVBoxLayout *centralLayout = new QVBoxLayout; centralLayout->addLayout(controlsLayout); centralLayout->addWidget(scrollArea, 1); centralLayout->addSpacing(4); centralLayout->addLayout(lineLayout); centralWidget->setLayout(centralLayout); setCentralWidget(centralWidget); setWindowTitle(tr("Character Map")); } void MainWindow::findStyles(const QFont &font) { QFontDatabase fontDatabase; QString currentItem = styleCombo->currentText(); styleCombo->clear(); QString style; foreach (style, fontDatabase.styles(font.family())) styleCombo->addItem(style); int styleIndex = styleCombo->findText(currentItem); if (styleIndex == -1) styleCombo->setCurrentIndex(0); else styleCombo->setCurrentIndex(styleIndex); } void MainWindow::findSizes(const QFont &font) { QFontDatabase fontDatabase; QString currentSize = sizeCombo->currentText(); sizeCombo->blockSignals(true); sizeCombo->clear(); int size; if(fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font))) { foreach(size, QFontDatabase::standardSizes()) { sizeCombo->addItem(QVariant(size).toString()); sizeCombo->setEditable(true); } } else { foreach(size, fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font))) { sizeCombo->addItem(QVariant(size).toString()); sizeCombo->setEditable(false); } } sizeCombo->blockSignals(false); int sizeIndex = sizeCombo->findText(currentSize); if(sizeIndex == -1) sizeCombo->setCurrentIndex(qMax(0, sizeCombo->count() / 3)); else sizeCombo->setCurrentIndex(sizeIndex); } void MainWindow::insertCharacter(const QString &character) { lineEdit->insert(character); } void MainWindow::updateClipboard() { clipboard->setText(lineEdit->text(), QClipboard::Clipboard); clipboard->setText(lineEdit->text(), QClipboard::Selection); }
  1. include <QApplication>
  2. include "mainwindow.h"
int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); } </source>

Create QFont

<source lang="cpp"> Foundations of Qt Development\Chapter07\paths\main.cpp /*

* Copyright (c) 2006-2007, Johan Thelin
* 
* All rights reserved.
* 
* 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 APress 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.
*
*/
  1. include <QApplication>
  2. include <QPainter>
  3. include <QPainterPath>
  4. include <QPixmap>

int main( int argc, char **argv ) {

 QApplication app( argc, argv );
 
 QPixmap pixmap( 200, 200 );
 pixmap.fill( Qt::white );
   
 QPainterPath path;
 
 path.addEllipse( 80, 80, 80, 80 );
 
 path.moveTo( 120, 120 );
 path.lineTo( 120, 40 );
 path.arcTo( 40, 40, 160, 160, 90, 90 );
 path.lineTo( 120, 120 );
 
 QFont font = QApplication::font();
 font.setPixelSize( 40 );
 
 path.addText( 20, 180, font, "Path" );
 
 QPainter painter( &pixmap );
 painter.setRenderHint( QPainter::Antialiasing );
 
 painter.setPen( Qt::black );
 painter.setBrush( Qt::gray );
 
 painter.drawPath( path );
 
 pixmap.save( "path.png" );
 
 return 0;

}


 </source>


Font dialog demo

<source lang="cpp">

Chapter03\colorandfont\main.cpp /*

* Copyright (c) 2006-2007, Johan Thelin
* 
* All rights reserved.
* 
* 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 APress 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.
*
*/
  1. include <QApplication>
  2. include <QFontDialog>
  3. include <QColorDialog>

class Tester : public QWidget { public:

 void doColor()
 {
   QColor color = QColorDialog::getColor(Qt::yellow, this );
   if( color.isValid() )
   {
     qDebug( "ok" );
   }
 }
 
 void doFont()
 {
   bool ok;
   QFont font = QFontDialog::getFont( 
                   &ok, 
                   QFont( "Arial", 18 ), 
                   this, 
                   tr("Pick a font") );
   if( ok )
   {
     qDebug( "ok" );
   }
 }

}; int main( int argc, char **argv ) {

 QApplication app( argc, argv );
 
 Tester t;
 t.doColor();
 t.doFont();
 
 return 0;

}


 </source>


plain text layout

<source lang="cpp"> /****************************************************************************

    • Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    • All rights reserved.
    • Contact: Nokia Corporation (qt-info@nokia.com)
    • This file is part of the documentation of the Qt Toolkit.
    • $QT_BEGIN_LICENSE:LGPL$
    • Commercial Usage
    • Licensees holding valid Qt Commercial licenses may use this file in
    • accordance with the Qt Commercial License Agreement provided with the
    • Software or, alternatively, in accordance with the terms contained in
    • a written agreement between you and Nokia.
    • GNU Lesser General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU Lesser
    • General Public License version 2.1 as published by the Free Software
    • Foundation and appearing in the file LICENSE.LGPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU Lesser General Public License version 2.1 requirements
    • will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    • In addition, as a special exception, Nokia gives you certain additional
    • rights. These rights are described in the Nokia Qt LGPL Exception
    • version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    • GNU General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU
    • General Public License version 3.0 as published by the Free Software
    • Foundation and appearing in the file LICENSE.GPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU General Public License version 3.0 requirements will be
    • met: http://www.gnu.org/copyleft/gpl.html.
    • If you have questions regarding the use of this file, please contact
    • Nokia at qt-info@nokia.com.
    • $QT_END_LICENSE$
                                                                                                                                                        • /
  1. ifndef WINDOW_H
  2. define WINDOW_H
  3. include <QWidget>

class Window : public QWidget {

   Q_OBJECT

public:

   Window(QWidget *parent = 0);

protected:

   void paintEvent(QPaintEvent *event);

private:

   QFont font;
   QString text;

};

  1. endif


  1. include <QtGui>
  2. include <math.h>
  3. include "window.h"

Window::Window(QWidget *parent)

   : QWidget(parent)

{

   text = QString("Support for text rendering and layout in Qt 4 has been "
                  "redesigned around a system that allows textual content to "
                  "be represented in a more flexible way than was possible "
                  "with Qt 3. Qt 4 also provides a more convenient "
                  "programming interface for editing documents. These "
                  "improvements are made available through a reimplementation "
                  "of the existing text rendering engine, and the "
                  "introduction of several new classes. "
                  "See the relevant module overview for a detailed discussion "
                  "of this framework. The following sections provide a brief "
                  "overview of the main concepts behind Scribe.");
   setWindowTitle(tr("Plain Text Layout"));

} void Window::paintEvent(QPaintEvent *event) {

   QTextLayout textLayout(text, font);
   qreal margin = 10;
   qreal radius = qMin(width()/2.0, height()/2.0) - margin;
   QFontMetrics fm(font);
   qreal lineHeight = fm.height();
   qreal y = 0;
   textLayout.beginLayout();
   while (1) {
       // create a new line 
       QTextLine line = textLayout.createLine();
       if (!line.isValid())
           break;
       qreal x1 = qMax(0.0, pow(pow(radius,2)-pow(radius-y,2), 0.5));
       qreal x2 = qMax(0.0, pow(pow(radius,2)-pow(radius-(y+lineHeight),2), 0.5));
       qreal x = qMax(x1, x2) + margin;
       qreal lineWidth = (width() - margin) - x;
       line.setLineWidth(lineWidth);
       line.setPosition(QPointF(x, margin+y));
       y += line.height();
   }
   textLayout.endLayout();
   QPainter painter;
   painter.begin(this);
   painter.setRenderHint(QPainter::Antialiasing);
   painter.fillRect(rect(), Qt::white);
   painter.setBrush(QBrush(Qt::black));
   painter.setPen(QPen(Qt::black));
   textLayout.draw(&painter, QPoint(0,0));
   painter.setBrush(QBrush(QColor("#a6ce39")));
   painter.setPen(QPen(Qt::black));
   painter.drawEllipse(QRectF(-radius, margin, 2*radius, 2*radius));
   painter.end();

}


  1. include <QtGui>
  2. include "window.h"

int main(int argc, char *argv[]) {

   QApplication app(argc, argv);
   Window *window = new Window;
   window->resize(337, 343);
   window->show();
   return app.exec();

}


 </source>


QFontDatabase and QTreeWidget

<source lang="cpp"> /****************************************************************************

    • Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    • All rights reserved.
    • Contact: Nokia Corporation (qt-info@nokia.com)
    • This file is part of the documentation of the Qt Toolkit.
    • $QT_BEGIN_LICENSE:LGPL$
    • Commercial Usage
    • Licensees holding valid Qt Commercial licenses may use this file in
    • accordance with the Qt Commercial License Agreement provided with the
    • Software or, alternatively, in accordance with the terms contained in
    • a written agreement between you and Nokia.
    • GNU Lesser General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU Lesser
    • General Public License version 2.1 as published by the Free Software
    • Foundation and appearing in the file LICENSE.LGPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU Lesser General Public License version 2.1 requirements
    • will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    • In addition, as a special exception, Nokia gives you certain additional
    • rights. These rights are described in the Nokia Qt LGPL Exception
    • version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    • GNU General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU
    • General Public License version 3.0 as published by the Free Software
    • Foundation and appearing in the file LICENSE.GPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU General Public License version 3.0 requirements will be
    • met: http://www.gnu.org/copyleft/gpl.html.
    • If you have questions regarding the use of this file, please contact
    • Nokia at qt-info@nokia.com.
    • $QT_END_LICENSE$
                                                                                                                                                        • /
  1. include <QtGui>

int main(int argc, char **argv) {

   QApplication app(argc, argv);
   QFontDatabase database;
   QTreeWidget fontTree;
   fontTree.setColumnCount(2);
   fontTree.setHeaderLabels(QStringList() << "Font" << "Smooth Sizes");
   foreach (QString family, database.families()) {
       QTreeWidgetItem *familyItem = new QTreeWidgetItem(&fontTree);
       familyItem->setText(0, family);
       foreach (QString style, database.styles(family)) {
           QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
           styleItem->setText(0, style);
           QString sizes;
           foreach (int points, database.smoothSizes(family, style))
               sizes += QString::number(points) + " ";
           styleItem->setText(1, sizes.trimmed());
       }

   }
   fontTree.resizeColumnToContents(0);
   fontTree.show();
   return app.exec();

}


</source>