Fixed line endings.
Conflicts: examples/widgets/applicationicon/applicationicon.svg examples/widgets/applicationicon/main.cpp examples/widgets/elidedlabel/elidedlabel.cpp examples/widgets/elidedlabel/elidedlabel.h examples/widgets/elidedlabel/main.cpp examples/widgets/elidedlabel/testwidget.cpp examples/widgets/elidedlabel/testwidget.h (cherry picked from commit 1b555a91f05b68c697b6985d1b672dc0fba5fc5a) (cherry picked from commit c0e0bfdd451f42b10051e8064153b811080ffa0e)
This commit is contained in:
parent
f9f395c28b
commit
4d10065c54
22
examples/widgets/applicationicon/applicationicon.svg
Normal file
22
examples/widgets/applicationicon/applicationicon.svg
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44" baseProfile="tiny" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 44 44">
|
||||
<defs>
|
||||
<linearGradient id="linearGradient2824" y2="1051.4" gradientUnits="userSpaceOnUse" x2="30.217" y1="1009.4" x1="15.109">
|
||||
<stop stop-color="#41a200" offset="0"/>
|
||||
<stop stop-color="#9be948" offset="0.63897"/>
|
||||
<stop stop-color="#beff61" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient2848" y2="1009.4" gradientUnits="userSpaceOnUse" y1="1053.7" gradientTransform="matrix(0.85714286,0,0,0.85714286,2.1428572,146.19467)" x2="15.085" x1="31.027">
|
||||
<stop stop-color="#41a200" offset="0"/>
|
||||
<stop stop-color="#9be948" offset="0.88602"/>
|
||||
<stop stop-color="#beff61" offset="1"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="layer1" transform="translate(0,-1008.3622)">
|
||||
<path id="rect2816" d="m8.412,1009h27.18c4.106,0,7.412,3.306,7.412,7.412v27.18c0,4.106-3.306,7.412-7.412,7.412h-27.18c-4.106,0-7.412-3-7.412-7v-27.18c0-4.106,3.306-7.412,7.412-7.412z" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.64300001" fill="url(#linearGradient2824)"/>
|
||||
<path id="rect2816-4" d="m9.353,1011h25.29c3.52,0,6.353,2.833,6.353,6.353v25.29c0,3.519-2.833,6.353-6.353,6.353h-25.29c-3.52-0.1-6.353-2.1-6.353-6.1v-25.29c0-3.519,2.833-6.353,6.353-6.353z" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.64300001" fill="url(#linearGradient2848)"/>
|
||||
<g id="text2893" font-weight="normal" transform="translate(-1.100281,1010.3622)" font-style="normal" font-stretch="normal" font-size="48px" font-variant="normal" font-family="Cambria Math" fill="#e5ffd5">
|
||||
<path id="path2908" fill="#e5ffd5" d="m11.92,35.44c1.359-1.719,2.672-3.828,3.938-6.328l7.522-14.742c-0.8-3.13-1.54-5.321-2.24-6.586-0.69-1.266-1.76-1.899-3.2-1.899-1.328,0.0000307-2.594,0.6563-3.797,1.969l-1.148-1.266c2.156-2.359,4.289-3.539,6.398-3.539,1.469,0.0000335,2.609,0.418,3.422,1.254,0.8125,0.836,1.492,2.168,2.039,3.996,0.5469,1.828,1.32,5.359,2.32,10.59,1.297,6.828,2.309,11.14,3.035,12.93,0.7265,1.789,1.59,2.684,2.59,2.684,0.7187,0.000002,1.383-0.25,1.992-0.75l0.8906,1.406c-1.547,1.203-2.938,1.805-4.172,1.805-1.75,0-3-0.8984-3.75-2.695-0.75-1.797-1.797-6.633-3.141-14.51h-0.1406c-2.658,5.391-5.258,11.001-7.798,16.831h-4.758z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
14
examples/widgets/applicationicon/main.cpp
Normal file
14
examples/widgets/applicationicon/main.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QLabel>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
QLabel label(QObject::tr("Hello, world!"));
|
||||
#if defined(Q_WS_S60)
|
||||
label.showMaximized();
|
||||
#else
|
||||
label.show();
|
||||
#endif
|
||||
return a.exec();
|
||||
}
|
71
examples/widgets/elidedlabel/elidedlabel.cpp
Normal file
71
examples/widgets/elidedlabel/elidedlabel.cpp
Normal file
@ -0,0 +1,71 @@
|
||||
#include "elidedlabel.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QTextLayout>
|
||||
#include <QDebug>
|
||||
|
||||
//! [0]
|
||||
ElidedLabel::ElidedLabel(const QString &text, QWidget *parent)
|
||||
: QFrame(parent)
|
||||
, elided(false)
|
||||
, content(text)
|
||||
{
|
||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
}
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
void ElidedLabel::setText(const QString &newText)
|
||||
{
|
||||
content = newText;
|
||||
update();
|
||||
}
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
void ElidedLabel::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
QFrame::paintEvent(event);
|
||||
|
||||
QPainter painter(this);
|
||||
QFontMetrics fontMetrics = painter.fontMetrics();
|
||||
|
||||
bool didElide = false;
|
||||
int lineSpacing = fontMetrics.lineSpacing();
|
||||
int y = 0;
|
||||
|
||||
QTextLayout textLayout(content, painter.font());
|
||||
textLayout.beginLayout();
|
||||
forever {
|
||||
QTextLine line = textLayout.createLine();
|
||||
|
||||
if (!line.isValid())
|
||||
break;
|
||||
|
||||
line.setLineWidth(width());
|
||||
int nextLineY = y + lineSpacing;
|
||||
|
||||
if (height() >= nextLineY + lineSpacing) {
|
||||
line.draw(&painter, QPoint(0, y));
|
||||
y = nextLineY;
|
||||
//! [2]
|
||||
//! [3]
|
||||
} else {
|
||||
QString lastLine = content.mid(line.textStart());
|
||||
QString elidedLastLine = fontMetrics.elidedText(lastLine, Qt::ElideRight, width());
|
||||
painter.drawText(QPoint(0, y + fontMetrics.ascent()), elidedLastLine);
|
||||
line = textLayout.createLine();
|
||||
didElide = line.isValid();
|
||||
break;
|
||||
}
|
||||
}
|
||||
textLayout.endLayout();
|
||||
//! [3]
|
||||
|
||||
//! [4]
|
||||
if (didElide != elided) {
|
||||
elided = didElide;
|
||||
emit elisionChanged(didElide);
|
||||
}
|
||||
}
|
||||
//! [4]
|
36
examples/widgets/elidedlabel/elidedlabel.h
Normal file
36
examples/widgets/elidedlabel/elidedlabel.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef ELIDEDLABEL_H
|
||||
#define ELIDEDLABEL_H
|
||||
|
||||
#include <QFrame>
|
||||
#include <QRect>
|
||||
#include <QResizeEvent>
|
||||
#include <QString>
|
||||
#include <QWidget>
|
||||
|
||||
//! [0]
|
||||
class ElidedLabel : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString text READ text WRITE setText)
|
||||
Q_PROPERTY(bool isElided READ isElided)
|
||||
|
||||
public:
|
||||
ElidedLabel(const QString &text, QWidget *parent = 0);
|
||||
|
||||
void setText(const QString &text);
|
||||
const QString & text() const { return content; }
|
||||
bool isElided() const { return elided; }
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
|
||||
signals:
|
||||
void elisionChanged(bool elided);
|
||||
|
||||
private:
|
||||
bool elided;
|
||||
QString content;
|
||||
};
|
||||
//! [0]
|
||||
|
||||
#endif // TEXTWRAPPINGWIDGET_H
|
13
examples/widgets/elidedlabel/main.cpp
Normal file
13
examples/widgets/elidedlabel/main.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
#include "testwidget.h"
|
||||
|
||||
#include <QtGui/QApplication>
|
||||
|
||||
//! [0]
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
QApplication application( argc, argv );
|
||||
TestWidget w;
|
||||
w.showFullScreen();
|
||||
return application.exec();
|
||||
}
|
||||
//! [0]
|
124
examples/widgets/elidedlabel/testwidget.cpp
Normal file
124
examples/widgets/elidedlabel/testwidget.cpp
Normal file
@ -0,0 +1,124 @@
|
||||
#include "testwidget.h"
|
||||
#include "elidedlabel.h"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QSizePolicy>
|
||||
#include <QGridLayout>
|
||||
|
||||
//! [0]
|
||||
TestWidget::TestWidget(QWidget *parent):
|
||||
QWidget(parent)
|
||||
{
|
||||
const QString romeo = tr(
|
||||
"But soft, what light through yonder window breaks? / "
|
||||
"It is the east, and Juliet is the sun. / "
|
||||
"Arise, fair sun, and kill the envious moon, / "
|
||||
"Who is already sick and pale with grief / "
|
||||
"That thou, her maid, art far more fair than she."
|
||||
);
|
||||
|
||||
const QString macbeth = tr(
|
||||
"To-morrow, and to-morrow, and to-morrow, / "
|
||||
"Creeps in this petty pace from day to day, / "
|
||||
"To the last syllable of recorded time; / "
|
||||
"And all our yesterdays have lighted fools / "
|
||||
"The way to dusty death. Out, out, brief candle! / "
|
||||
"Life's but a walking shadow, a poor player, / "
|
||||
"That struts and frets his hour upon the stage, / "
|
||||
"And then is heard no more. It is a tale / "
|
||||
"Told by an idiot, full of sound and fury, / "
|
||||
"Signifying nothing."
|
||||
);
|
||||
|
||||
const QString harry = tr("Feeling lucky, punk?");
|
||||
|
||||
textSamples << romeo << macbeth << harry;
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
sampleIndex = 0;
|
||||
elidedText = new ElidedLabel(textSamples[sampleIndex], this);
|
||||
elidedText->setFrameStyle(QFrame::Box);
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
QPushButton *switchButton = new QPushButton(tr("Switch text"));
|
||||
connect(switchButton, SIGNAL(clicked(bool)), this, SLOT(switchText()));
|
||||
|
||||
QPushButton *exitButton = new QPushButton(tr("Exit"));
|
||||
connect(exitButton, SIGNAL(clicked(bool)), this, SLOT(close()));
|
||||
|
||||
QLabel *label = new QLabel(tr("Elided"));
|
||||
label->setVisible(elidedText->isElided());
|
||||
connect(elidedText, SIGNAL(elisionChanged(bool)), label, SLOT(setVisible(bool)));
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
widthSlider = new QSlider(Qt::Horizontal);
|
||||
widthSlider->setMinimum(0);
|
||||
connect(widthSlider, SIGNAL(valueChanged(int)), this, SLOT(onWidthChanged(int)));
|
||||
|
||||
heightSlider = new QSlider(Qt::Vertical);
|
||||
heightSlider->setInvertedAppearance(true);
|
||||
heightSlider->setMinimum(0);
|
||||
connect(heightSlider, SIGNAL(valueChanged(int)), this, SLOT(onHeightChanged(int)));
|
||||
//! [3]
|
||||
|
||||
//! [4]
|
||||
QGridLayout *layout = new QGridLayout();
|
||||
layout->addWidget(label, 0, 1, Qt::AlignCenter);
|
||||
layout->addWidget(switchButton, 0, 2);
|
||||
layout->addWidget(exitButton, 0, 3);
|
||||
layout->addWidget(widthSlider, 1, 1, 1, 3);
|
||||
layout->addWidget(heightSlider, 2, 0);
|
||||
layout->addWidget(elidedText, 2, 1, 1, 3, Qt::AlignTop | Qt::AlignLeft);
|
||||
|
||||
setLayout(layout);
|
||||
//! [4]
|
||||
|
||||
//! [5]
|
||||
#ifdef Q_WS_MAEMO_5
|
||||
setAttribute(Qt::WA_Maemo5AutoOrientation, true);
|
||||
#endif
|
||||
}
|
||||
//! [5]
|
||||
|
||||
//! [6]
|
||||
void TestWidget::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
|
||||
int maxWidth = widthSlider->width();
|
||||
widthSlider->setMaximum(maxWidth);
|
||||
widthSlider->setValue(maxWidth / 2);
|
||||
|
||||
int maxHeight = heightSlider->height();
|
||||
heightSlider->setMaximum(maxHeight);
|
||||
heightSlider->setValue(maxHeight / 2);
|
||||
|
||||
elidedText->setFixedSize(widthSlider->value(), heightSlider->value());
|
||||
}
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
void TestWidget::switchText()
|
||||
{
|
||||
sampleIndex = (sampleIndex + 1) % textSamples.size();
|
||||
elidedText->setText(textSamples.at(sampleIndex));
|
||||
}
|
||||
//! [7]
|
||||
|
||||
//! [8]
|
||||
void TestWidget::onWidthChanged(int width)
|
||||
{
|
||||
elidedText->setFixedWidth(width);
|
||||
}
|
||||
|
||||
void TestWidget::onHeightChanged(int height)
|
||||
{
|
||||
elidedText->setFixedHeight(height);
|
||||
}
|
||||
//! [8]
|
||||
|
||||
|
36
examples/widgets/elidedlabel/testwidget.h
Normal file
36
examples/widgets/elidedlabel/testwidget.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef TESTWIDGET_H
|
||||
#define TESTWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QStringList>
|
||||
#include <QSlider>
|
||||
#include <QComboBox>
|
||||
|
||||
class ElidedLabel;
|
||||
|
||||
//! [0]
|
||||
class TestWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TestWidget(QWidget *parent = 0);
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
|
||||
private slots:
|
||||
void switchText();
|
||||
void onWidthChanged(int width);
|
||||
void onHeightChanged(int height);
|
||||
|
||||
private:
|
||||
int sampleIndex;
|
||||
QStringList textSamples;
|
||||
ElidedLabel *elidedText;
|
||||
QSlider *heightSlider;
|
||||
QSlider *widthSlider;
|
||||
};
|
||||
//! [0]
|
||||
|
||||
#endif // TESTWIDGET_H
|
Loading…
Reference in New Issue
Block a user