source: trunk/examples/fonts/simple-qfont-demo/viewer.cpp@ 7

Last change on this file since 7 was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 4.6 KB
Line 
1/* $Id: viewer.cpp 2 2005-11-16 15:49:26Z dmik $ */
2
3#include "viewer.h"
4#include <qstring.h>
5#include <qstringlist.h>
6#include <qtextview.h>
7#include <qpushbutton.h>
8#include <qlayout.h>
9
10Viewer::Viewer()
11 :QWidget()
12{
13 setFontSubstitutions();
14
15 QString greeting_heb = QString::fromUtf8( "\327\251\327\234\327\225\327\235" );
16 QString greeting_ru = QString::fromUtf8( "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265" );
17 QString greeting_en( "Hello" );
18
19 greetings = new QTextView( this, "textview" );
20
21 greetings->setText( greeting_en + "\n" +
22 greeting_ru + "\n" +
23 greeting_heb );
24
25 fontInfo = new QTextView( this, "fontinfo" );
26
27 setDefault();
28
29 defaultButton = new QPushButton( "Default", this,
30 "pushbutton1" );
31 defaultButton->setFont( QFont( "times" ) );
32 connect( defaultButton, SIGNAL( clicked() ),
33 this, SLOT( setDefault() ) );
34
35 sansSerifButton = new QPushButton( "Sans Serif", this,
36 "pushbutton2" );
37 sansSerifButton->setFont( QFont( "Helvetica", 12 ) );
38 connect( sansSerifButton, SIGNAL( clicked() ),
39 this, SLOT( setSansSerif() ) );
40
41 italicsButton = new QPushButton( "Italics", this,
42 "pushbutton3" );
43 italicsButton->setFont( QFont( "lucida", 12, QFont::Bold, TRUE ) );
44 connect( italicsButton, SIGNAL( clicked() ),
45 this, SLOT( setItalics() ) );
46
47 layout();
48}
49
50void Viewer::setDefault()
51{
52 QFont font( "Bavaria" );
53 font.setPointSize( 24 );
54
55 font.setWeight( QFont::Bold );
56 font.setUnderline( TRUE );
57
58 greetings->setFont( font );
59
60 showFontInfo( font );
61}
62
63void Viewer::setSansSerif()
64{
65 QFont font( "Newyork", 18 );
66 font.setStyleHint( QFont::SansSerif );
67 greetings->setFont( font );
68
69 showFontInfo( font );
70}
71
72void Viewer::setItalics()
73{
74 QFont font( "Tokyo" );
75 font.setPointSize( 32 );
76 font.setWeight( QFont::Bold );
77 font.setItalic( TRUE );
78
79 greetings->setFont( font );
80
81 showFontInfo( font );
82}
83
84void Viewer::showFontInfo( QFont & font )
85{
86 QFontInfo info( font );
87
88 QString messageText;
89 messageText = "Font requested: \"" +
90 font.family() + "\" " +
91 QString::number( font.pointSize() ) + "pt<BR>" +
92 "Font used: \"" +
93 info.family() + "\" " +
94 QString::number( info.pointSize() ) + "pt<P>";
95
96 QStringList substitutions = QFont::substitutes( font.family() );
97
98 if ( ! substitutions.isEmpty() ){
99 messageText += "The following substitutions exist for " + \
100 font.family() + ":<UL>";
101
102 QStringList::Iterator i = substitutions.begin();
103 while ( i != substitutions.end() ){
104 messageText += "<LI>\"" + (* i) + "\"";
105 i++;
106 }
107 messageText += "</UL>";
108 } else {
109 messageText += "No substitutions exist for " + \
110 font.family() + ".";
111 }
112
113 fontInfo->setText( messageText );
114}
115
116void Viewer::setFontSubstitutions()
117{
118 QStringList substitutes;
119 substitutes.append( "Times" );
120 substitutes += "Mincho",
121 substitutes << "Arabic Newspaper" << "crox";
122
123 QFont::insertSubstitutions( "Bavaria", substitutes );
124
125 QFont::insertSubstitution( "Tokyo", "Lucida" );
126}
127
128
129// For those who prefer to use Qt Designer for creating GUIs
130// the following function might not be of particular interest:
131// all it does is creating the widget layout.
132
133void Viewer::layout()
134{
135 QHBoxLayout * textViewContainer = new QHBoxLayout();
136 textViewContainer->addWidget( greetings );
137 textViewContainer->addWidget( fontInfo );
138
139 QHBoxLayout * buttonContainer = new QHBoxLayout();
140
141 buttonContainer->addWidget( defaultButton );
142 buttonContainer->addWidget( sansSerifButton );
143 buttonContainer->addWidget( italicsButton );
144
145 int maxButtonHeight = defaultButton->height();
146
147 if ( sansSerifButton->height() > maxButtonHeight )
148 maxButtonHeight = sansSerifButton->height();
149 if ( italicsButton->height() > maxButtonHeight )
150 maxButtonHeight = italicsButton->height();
151
152 defaultButton->setFixedHeight( maxButtonHeight );
153 sansSerifButton->setFixedHeight( maxButtonHeight );
154 italicsButton->setFixedHeight( maxButtonHeight );
155
156 QVBoxLayout * container = new QVBoxLayout( this );
157 container->addLayout( textViewContainer );
158 container->addLayout( buttonContainer );
159
160 resize( 700, 250 );
161}
Note: See TracBrowser for help on using the repository browser.