20 #include "linkslabel.moc"
23 #include <kurllabel.h>
33 class LinksLabel::Private
37 std::vector<QLabel*> labels;
38 std::vector<KUrlLabel*> urllabels;
45 p->layout =
new QHBoxLayout(
this );
47 QLabel* l =
new QLabel( QString::fromUtf8(
"Dit is een " ),
this );
48 p->labels.push_back( l );
49 p->layout->addWidget( l );
51 KUrlLabel* u =
new KUrlLabel( QString::fromUtf8(
"http://www.kde.org/" ),
52 QString::fromUtf8(
"url"),
this );
53 p->urllabels.push_back( u );
54 p->layout->addWidget( u );
56 l =
new QLabel( QString::fromUtf8(
" !" ),
this );
57 p->labels.push_back( l );
58 p->layout->addWidget(l );
60 p->layout->activate();
68 void LinksLabel::urlClicked()
70 const QObject* o = sender();
71 std::vector<KUrlLabel*>::iterator i = std::find( p->urllabels.begin(), p->urllabels.end(),
static_cast<const KUrlLabel*
>( o ) );
72 assert( i != p->urllabels.end() );
83 buf.data.push_back( std::pair<bool, QString>(
false, s ) );
88 buf.data.push_back( std::pair<bool, QString>(
true, s ) );
92 void deleteObj( QObject* o ) {
delete o; }
97 std::for_each( p->urllabels.begin(), p->urllabels.end(), deleteObj );
98 std::for_each( p->labels.begin(), p->labels.end(), deleteObj );
103 p->layout =
new QHBoxLayout(
this );
105 for ( LinksLabelEditBuf::vec::iterator i = buf.data.begin(); i != buf.data.end(); ++i )
111 KUrlLabel* l =
new KUrlLabel( QString::fromUtf8(
"http://edu.kde.org/kig" ),
113 p->urllabels.push_back( l );
114 p->layout->addWidget( l );
115 connect( l, SIGNAL( leftClickedUrl() ), SLOT( urlClicked() ) );
120 QLabel* l =
new QLabel( i->second,
this );
121 p->labels.push_back( l );
122 p->layout->addWidget( l );
126 QSpacerItem* spacer =
new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
128 p->layout->addItem( spacer );
130 p->layout->activate();
132 std::for_each( p->urllabels.begin(), p->urllabels.end(), mem_fun( &QWidget::show ) );
133 std::for_each( p->labels.begin(), p->labels.end(), mem_fun( &QWidget::show ) );
void applyEdit(LinksLabelEditBuf &buf)
apply the changes...
void linkClicked(int i)
the user clicked on a link.
void addLink(const QString &s, LinksLabelEditBuf &buf)
add a link...
LinksLabel(QWidget *parent=0)
LinksLabelEditBuf startEdit()
start editing, start recording changes in a LinksLabelEditBuf, but don't apply them until after endEd...
void changed()
the structure of links and texts was changed
void addText(const QString &s, LinksLabelEditBuf &buf)
add a piece of normal text.