• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDEUI

  • kdeui
  • widgets
kpixmapregionselectorwidget.cpp
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 Copyright (C) 2004 Antonio Larrosa <larrosa@kde.org
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20/* NOTE: There are two copies of this .h and the .cpp file, with subtle differences.
21 * One copy is in kdelibs/kdeui, and the other copy is in kdepim/libkdepim
22 * This is because kdepim has to remain backwards compatible. Any changes
23 * to either file should be made to the other.
24 */
25
26#include "kpixmapregionselectorwidget.h"
27#include <QtGui/QPainter>
28#include <QtGui/QColor>
29#include <QtGui/QImage>
30#include <QLabel>
31#include <QtGui/QLayout>
32#include <QRubberBand>
33#include <kdebug.h>
34#include <kicon.h>
35#include <klocale.h>
36#include <kmenu.h>
37#include <kaction.h>
38#include <stdlib.h>
39#include <QtGui/QCursor>
40#include <QtGui/QApplication>
41#include <QMouseEvent>
42#include "kactioncollection.h"
43
44class KPixmapRegionSelectorWidget::Private
45{
46public:
47 Private(KPixmapRegionSelectorWidget *q): q(q) {}
48
49 KPixmapRegionSelectorWidget *q;
50
55 void updatePixmap();
56
57 QRect calcSelectionRectangle( const QPoint &startPoint, const QPoint & endPoint );
58
59 enum CursorState { None=0, Resizing, Moving };
60 CursorState m_state;
61
62 QPixmap m_unzoomedPixmap;
63 QPixmap m_originalPixmap;
64 QPixmap m_linedPixmap;
65 QRect m_selectedRegion;
66 QLabel *m_label;
67
68 QPoint m_tempFirstClick;
69 double m_forcedAspectRatio;
70
71 int m_maxWidth, m_maxHeight;
72 double m_zoomFactor;
73
74 QRubberBand *m_rubberBand;
75};
76
77KPixmapRegionSelectorWidget::KPixmapRegionSelectorWidget( QWidget *parent)
78 : QWidget( parent ), d(new Private(this))
79{
80 QHBoxLayout * hboxLayout=new QHBoxLayout( this );
81
82 hboxLayout->addStretch();
83 QVBoxLayout * vboxLayout=new QVBoxLayout();
84 hboxLayout->addItem(vboxLayout);
85
86 vboxLayout->addStretch();
87 d->m_label = new QLabel(this);
88 d->m_label->setAttribute(Qt::WA_NoSystemBackground,true);//setBackgroundMode( Qt::NoBackground );
89 d->m_label->installEventFilter( this );
90
91 vboxLayout->addWidget(d->m_label);
92 vboxLayout->addStretch();
93
94 hboxLayout->addStretch();
95
96 d->m_forcedAspectRatio=0;
97
98 d->m_zoomFactor=1.0;
99 d->m_rubberBand = new QRubberBand(QRubberBand::Rectangle, d->m_label);
100 d->m_rubberBand->hide();
101}
102
103KPixmapRegionSelectorWidget::~KPixmapRegionSelectorWidget()
104{
105 delete d;
106}
107
108QPixmap KPixmapRegionSelectorWidget::pixmap() const
109{
110 return d->m_unzoomedPixmap;
111}
112
113void KPixmapRegionSelectorWidget::setPixmap( const QPixmap &pixmap )
114{
115 Q_ASSERT(!pixmap.isNull()); //This class isn't designed to deal with null pixmaps.
116 d->m_originalPixmap = pixmap;
117 d->m_unzoomedPixmap = pixmap;
118 d->m_label->setPixmap( pixmap );
119 resetSelection();
120}
121
122void KPixmapRegionSelectorWidget::resetSelection()
123{
124 d->m_selectedRegion = d->m_originalPixmap.rect();
125 d->m_rubberBand->hide();
126 d->updatePixmap();
127}
128
129QRect KPixmapRegionSelectorWidget::selectedRegion() const
130{
131 return d->m_selectedRegion;
132}
133
134void KPixmapRegionSelectorWidget::setSelectedRegion(const QRect &rect)
135{
136 if (!rect.isValid()) resetSelection();
137 else
138 {
139 d->m_selectedRegion=rect;
140 d->updatePixmap();
141 }
142}
143
144void KPixmapRegionSelectorWidget::Private::updatePixmap()
145{
146 Q_ASSERT(!m_originalPixmap.isNull());
147 if (m_originalPixmap.isNull()) { m_label->setPixmap(m_originalPixmap); return; }
148 if (m_selectedRegion.width()>m_originalPixmap.width()) m_selectedRegion.setWidth( m_originalPixmap.width() );
149 if (m_selectedRegion.height()>m_originalPixmap.height()) m_selectedRegion.setHeight( m_originalPixmap.height() );
150
151 QPainter painter;
152 if (m_linedPixmap.isNull())
153 {
154 m_linedPixmap = m_originalPixmap;
155 QPainter p(&m_linedPixmap);
156 p.setCompositionMode(QPainter::CompositionMode_SourceAtop);
157 p.fillRect(m_linedPixmap.rect(), QColor(0, 0, 0, 100));
158 }
159
160 QPixmap pixmap = m_linedPixmap;
161 painter.begin(&pixmap);
162 painter.drawPixmap( m_selectedRegion.topLeft(),
163 m_originalPixmap, m_selectedRegion );
164
165
166 painter.end();
167
168 m_label->setPixmap(pixmap);
169
170 qApp->sendPostedEvents(0,QEvent::LayoutRequest);
171
172 if (m_selectedRegion == m_originalPixmap.rect())//d->m_label->rect()) //### CHECK!
173 m_rubberBand->hide();
174 else
175 {
176 m_rubberBand->setGeometry(QRect(m_selectedRegion.topLeft(),
177 m_selectedRegion.size()));
178
179/* m_rubberBand->setGeometry(QRect(m_label -> mapToGlobal(m_selectedRegion.topLeft()),
180 m_selectedRegion.size()));
181*/
182 if (m_state!=None) m_rubberBand->show();
183 }
184
185}
186
187
188KMenu *KPixmapRegionSelectorWidget::createPopupMenu()
189{
190 KMenu *popup=new KMenu(this );
191 KActionCollection *actions=new KActionCollection(popup);
192 popup->setObjectName( "PixmapRegionSelectorPopup");
193 popup->addTitle(i18n("Image Operations"));
194
195 QAction *action = actions->addAction("rotateclockwise");
196 action->setText(i18n("&Rotate Clockwise"));
197 action->setIcon( KIcon( "object-rotate-right" ) );
198 connect( action, SIGNAL(triggered(bool)), this, SLOT(rotateClockwise()) );
199
200 popup->addAction(action);
201
202 action = actions->addAction("rotatecounterclockwise");
203 action->setText(i18n("Rotate &Counterclockwise"));
204 action->setIcon( KIcon( "object-rotate-left" ) );
205 connect( action, SIGNAL(triggered(bool)), this, SLOT(rotateCounterclockwise()) );
206
207 popup->addAction(action);
208
209/*
210 I wonder if it would be appropriate to have here an "Open with..." option to
211 edit the image (antlarr)
212*/
213 return popup;
214}
215
216void KPixmapRegionSelectorWidget::rotate(RotateDirection direction)
217{
218 int w=d->m_originalPixmap.width();
219 int h=d->m_originalPixmap.height();
220 QImage img=d->m_unzoomedPixmap.toImage();
221 if(direction == Rotate90)
222 img = img.transformed(QTransform().rotate(90.0));
223 else if(direction == Rotate180)
224 img = img.transformed(QTransform().rotate(180.0));
225 else
226 img = img.transformed(QTransform().rotate(270.0));
227
228 d->m_unzoomedPixmap=QPixmap::fromImage(img);
229
230 img=d->m_originalPixmap.toImage();
231 if(direction == Rotate90)
232 img = img.transformed(QTransform().rotate(90.0));
233 else if(direction == Rotate180)
234 img = img.transformed(QTransform().rotate(180.0));
235 else
236 img = img.transformed(QTransform().rotate(270.0));
237
238 d->m_originalPixmap=QPixmap::fromImage(img);
239
240 d->m_linedPixmap=QPixmap();
241
242 if (d->m_forcedAspectRatio>0 && d->m_forcedAspectRatio!=1)
243 resetSelection();
244 else
245 {
246 switch (direction)
247 {
248 case ( Rotate90 ):
249 {
250 int x=h-d->m_selectedRegion.y()-d->m_selectedRegion.height();
251 int y=d->m_selectedRegion.x();
252 d->m_selectedRegion.setRect(x, y, d->m_selectedRegion.height(), d->m_selectedRegion.width() );
253 d->updatePixmap();
254// qApp->sendPostedEvents(0,QEvent::LayoutRequest);
255// updatePixmap();
256
257 } break;
258 case ( Rotate270 ):
259 {
260 int x=d->m_selectedRegion.y();
261 int y=w-d->m_selectedRegion.x()-d->m_selectedRegion.width();
262 d->m_selectedRegion.setRect(x, y, d->m_selectedRegion.height(), d->m_selectedRegion.width() );
263 d->updatePixmap();
264// qApp->sendPostedEvents(0,QEvent::LayoutRequest);
265// updatePixmap();
266 } break;
267 default: resetSelection();
268 }
269 }
270
271 emit pixmapRotated();
272}
273
274void KPixmapRegionSelectorWidget::rotateClockwise()
275{
276 rotate(Rotate90);
277}
278
279void KPixmapRegionSelectorWidget::rotateCounterclockwise()
280{
281 rotate(Rotate270);
282}
283
284bool KPixmapRegionSelectorWidget::eventFilter(QObject *obj, QEvent *ev)
285{
286 if ( ev->type() == QEvent::MouseButtonPress )
287 {
288 QMouseEvent *mev= (QMouseEvent *)(ev);
289 //kDebug() << QString("click at %1,%2").arg( mev->x() ).arg( mev->y() );
290
291 if ( mev->button() == Qt::RightButton )
292 {
293 KMenu *popup = createPopupMenu( );
294 popup->exec( mev->globalPos() );
295 delete popup;
296 return true;
297 }
298
299 QCursor cursor;
300
301 if ( d->m_selectedRegion.contains( mev->pos() )
302 && d->m_selectedRegion!=d->m_originalPixmap.rect() )
303 {
304 d->m_state=Private::Moving;
305 cursor.setShape( Qt::SizeAllCursor );
306 d->m_rubberBand->show();
307 }
308 else
309 {
310 d->m_state=Private::Resizing;
311 cursor.setShape( Qt::CrossCursor );
312 }
313 QApplication::setOverrideCursor(cursor);
314
315 d->m_tempFirstClick=mev->pos();
316
317
318 return true;
319 }
320
321 if ( ev->type() == QEvent::MouseMove )
322 {
323 QMouseEvent *mev= (QMouseEvent *)(ev);
324
325 //kDebug() << QString("move to %1,%2").arg( mev->x() ).arg( mev->y() );
326
327 if ( d->m_state == Private::Resizing )
328 {
329 setSelectedRegion (
330 d->calcSelectionRectangle( d->m_tempFirstClick, mev->pos() ) );
331 }
332 else if (d->m_state == Private::Moving )
333 {
334 int mevx = mev->x();
335 int mevy = mev->y();
336 bool mouseOutside=false;
337 if ( mevx < 0 )
338 {
339 d->m_selectedRegion.translate(-d->m_selectedRegion.x(),0);
340 mouseOutside=true;
341 }
342 else if ( mevx > d->m_originalPixmap.width() )
343 {
344 d->m_selectedRegion.translate(d->m_originalPixmap.width()-d->m_selectedRegion.width()-d->m_selectedRegion.x(),0);
345 mouseOutside=true;
346 }
347 if ( mevy < 0 )
348 {
349 d->m_selectedRegion.translate(0,-d->m_selectedRegion.y());
350 mouseOutside=true;
351 }
352 else if ( mevy > d->m_originalPixmap.height() )
353 {
354 d->m_selectedRegion.translate(0,d->m_originalPixmap.height()-d->m_selectedRegion.height()-d->m_selectedRegion.y());
355 mouseOutside=true;
356 }
357 if (mouseOutside) { d->updatePixmap(); return true; };
358
359 d->m_selectedRegion.translate( mev->x()-d->m_tempFirstClick.x(),
360 mev->y()-d->m_tempFirstClick.y() );
361
362 // Check that the region has not fallen outside the image
363 if (d->m_selectedRegion.x() < 0)
364 d->m_selectedRegion.translate(-d->m_selectedRegion.x(),0);
365 else if (d->m_selectedRegion.right() > d->m_originalPixmap.width())
366 d->m_selectedRegion.translate(-(d->m_selectedRegion.right()-d->m_originalPixmap.width()),0);
367
368 if (d->m_selectedRegion.y() < 0)
369 d->m_selectedRegion.translate(0,-d->m_selectedRegion.y());
370 else if (d->m_selectedRegion.bottom() > d->m_originalPixmap.height())
371 d->m_selectedRegion.translate(0,-(d->m_selectedRegion.bottom()-d->m_originalPixmap.height()));
372
373 d->m_tempFirstClick=mev->pos();
374 d->updatePixmap();
375 }
376 return true;
377 }
378
379 if ( ev->type() == QEvent::MouseButtonRelease )
380 {
381 QMouseEvent *mev= (QMouseEvent *)(ev);
382
383 if ( d->m_state == Private::Resizing && mev->pos() == d->m_tempFirstClick)
384 resetSelection();
385
386 d->m_state=Private::None;
387 QApplication::restoreOverrideCursor();
388 d->m_rubberBand->hide();
389 return true;
390 }
391
392 QWidget::eventFilter(obj, ev);
393 return false;
394}
395
396QRect KPixmapRegionSelectorWidget::Private::calcSelectionRectangle( const QPoint & startPoint, const QPoint & _endPoint )
397{
398 QPoint endPoint = _endPoint;
399 if ( endPoint.x() < 0 ) endPoint.setX(0);
400 else if ( endPoint.x() > m_originalPixmap.width() ) endPoint.setX(m_originalPixmap.width());
401 if ( endPoint.y() < 0 ) endPoint.setY(0);
402 else if ( endPoint.y() > m_originalPixmap.height() ) endPoint.setY(m_originalPixmap.height());
403 int w=abs(startPoint.x()-endPoint.x());
404 int h=abs(startPoint.y()-endPoint.y());
405
406 if (m_forcedAspectRatio>0)
407 {
408 double aspectRatio=w/double(h);
409
410 if (aspectRatio>m_forcedAspectRatio)
411 h=(int)(w/m_forcedAspectRatio);
412 else
413 w=(int)(h*m_forcedAspectRatio);
414 }
415
416 int x,y;
417 if ( startPoint.x() < endPoint.x() )
418 x=startPoint.x();
419 else
420 x=startPoint.x()-w;
421 if ( startPoint.y() < endPoint.y() )
422 y=startPoint.y();
423 else
424 y=startPoint.y()-h;
425
426 if (x<0)
427 {
428 w+=x;
429 x=0;
430 h=(int)(w/m_forcedAspectRatio);
431
432 if ( startPoint.y() > endPoint.y() )
433 y=startPoint.y()-h;
434 }
435 else if (x+w>m_originalPixmap.width())
436 {
437 w=m_originalPixmap.width()-x;
438 h=(int)(w/m_forcedAspectRatio);
439
440 if ( startPoint.y() > endPoint.y() )
441 y=startPoint.y()-h;
442 }
443 if (y<0)
444 {
445 h+=y;
446 y=0;
447 w=(int)(h*m_forcedAspectRatio);
448
449 if ( startPoint.x() > endPoint.x() )
450 x=startPoint.x()-w;
451 }
452 else if (y+h>m_originalPixmap.height())
453 {
454 h=m_originalPixmap.height()-y;
455 w=(int)(h*m_forcedAspectRatio);
456
457 if ( startPoint.x() > endPoint.x() )
458 x=startPoint.x()-w;
459 }
460
461 return QRect(x,y,w,h);
462}
463
464QRect KPixmapRegionSelectorWidget::unzoomedSelectedRegion() const
465{
466 return QRect((int)(d->m_selectedRegion.x()/d->m_zoomFactor),
467 (int)(d->m_selectedRegion.y()/d->m_zoomFactor),
468 (int)(d->m_selectedRegion.width()/d->m_zoomFactor),
469 (int)(d->m_selectedRegion.height()/d->m_zoomFactor));
470}
471
472QImage KPixmapRegionSelectorWidget::selectedImage() const
473{
474 QImage origImage=d->m_unzoomedPixmap.toImage();
475 return origImage.copy(unzoomedSelectedRegion());
476}
477
478void KPixmapRegionSelectorWidget::setSelectionAspectRatio(int width, int height)
479{
480 d->m_forcedAspectRatio=width/double(height);
481}
482
483void KPixmapRegionSelectorWidget::setFreeSelectionAspectRatio()
484{
485 d->m_forcedAspectRatio=0;
486}
487
488void KPixmapRegionSelectorWidget::setMaximumWidgetSize(int width, int height)
489{
490 d->m_maxWidth=width;
491 d->m_maxHeight=height;
492
493 if (d->m_selectedRegion == d->m_originalPixmap.rect()) d->m_selectedRegion=QRect();
494 d->m_originalPixmap=d->m_unzoomedPixmap;
495
496// kDebug() << QString(" original Pixmap :") << d->m_originalPixmap.rect();
497// kDebug() << QString(" unzoomed Pixmap : %1 x %2 ").arg(d->m_unzoomedPixmap.width()).arg(d->m_unzoomedPixmap.height());
498
499 if ( !d->m_originalPixmap.isNull() &&
500 ( d->m_originalPixmap.width() > d->m_maxWidth ||
501 d->m_originalPixmap.height() > d->m_maxHeight ) )
502 {
503 /* We have to resize the pixmap to get it complete on the screen */
504 QImage image=d->m_originalPixmap.toImage();
505 d->m_originalPixmap=QPixmap::fromImage( image.scaled( width, height, Qt::KeepAspectRatio,Qt::SmoothTransformation ) );
506 double oldZoomFactor = d->m_zoomFactor;
507 d->m_zoomFactor=d->m_originalPixmap.width()/(double)d->m_unzoomedPixmap.width();
508
509 if (d->m_selectedRegion.isValid())
510 {
511 d->m_selectedRegion=
512 QRect((int)(d->m_selectedRegion.x()*d->m_zoomFactor/oldZoomFactor),
513 (int)(d->m_selectedRegion.y()*d->m_zoomFactor/oldZoomFactor),
514 (int)(d->m_selectedRegion.width()*d->m_zoomFactor/oldZoomFactor),
515 (int)(d->m_selectedRegion.height()*d->m_zoomFactor/oldZoomFactor) );
516 }
517 }
518
519 if (!d->m_selectedRegion.isValid()) d->m_selectedRegion = d->m_originalPixmap.rect();
520
521 d->m_linedPixmap=QPixmap();
522 d->updatePixmap();
523 resize(d->m_label->width(), d->m_label->height());
524}
525
526#include "kpixmapregionselectorwidget.moc"
KActionCollection
A container for a set of QAction objects.
Definition: kactioncollection.h:57
KActionCollection::addAction
QAction * addAction(const QString &name, QAction *action)
Add an action under the given name to the collection.
Definition: kactioncollection.cpp:217
KIcon
A wrapper around QIcon that provides KDE icon features.
Definition: kicon.h:41
KMenu
A menu with keyboard searching.
Definition: kmenu.h:42
KMenu::addTitle
QAction * addTitle(const QString &text, QAction *before=0L)
Inserts a title item with no icon.
Definition: kmenu.cpp:170
KPixmapRegionSelectorWidget
KPixmapRegionSelectorWidget is a widget that shows a picture and provides the user with a friendly wa...
Definition: kpixmapregionselectorwidget.h:45
KPixmapRegionSelectorWidget::setSelectedRegion
void setSelectedRegion(const QRect &rect)
Sets the selected region to be rect (in zoomed pixmap coordinates)
Definition: kpixmapregionselectorwidget.cpp:134
KPixmapRegionSelectorWidget::resetSelection
void resetSelection()
Resets the selection to use the whole image.
Definition: kpixmapregionselectorwidget.cpp:122
KPixmapRegionSelectorWidget::rotateClockwise
void rotateClockwise()
Rotates the current image 90º clockwise.
Definition: kpixmapregionselectorwidget.cpp:274
KPixmapRegionSelectorWidget::unzoomedSelectedRegion
QRect unzoomedSelectedRegion() const
Returns the selected region ( in unzoomed, original pixmap coordinates )
Definition: kpixmapregionselectorwidget.cpp:464
KPixmapRegionSelectorWidget::pixmap
QPixmap pixmap
Definition: kpixmapregionselectorwidget.h:47
KPixmapRegionSelectorWidget::setFreeSelectionAspectRatio
void setFreeSelectionAspectRatio()
Allows the user to do a selection which has any aspect ratio.
Definition: kpixmapregionselectorwidget.cpp:483
KPixmapRegionSelectorWidget::pixmapRotated
void pixmapRotated()
KPixmapRegionSelectorWidget::setPixmap
void setPixmap(const QPixmap &pixmap)
Sets the pixmap which will be shown for the user to select a region from.
Definition: kpixmapregionselectorwidget.cpp:113
KPixmapRegionSelectorWidget::setSelectionAspectRatio
void setSelectionAspectRatio(int width, int height)
Sets the aspect ration that the selected subimage should have.
Definition: kpixmapregionselectorwidget.cpp:478
KPixmapRegionSelectorWidget::KPixmapRegionSelectorWidget
KPixmapRegionSelectorWidget(QWidget *parent=0)
Constructor for a KPixmapRegionSelectorWidget.
Definition: kpixmapregionselectorwidget.cpp:77
KPixmapRegionSelectorWidget::createPopupMenu
virtual KMenu * createPopupMenu()
Creates a KMenu with the menu that appears when clicking with the right button on the label.
Definition: kpixmapregionselectorwidget.cpp:188
KPixmapRegionSelectorWidget::~KPixmapRegionSelectorWidget
~KPixmapRegionSelectorWidget()
Destructor for a KPixmapRegionSelectorWidget.
Definition: kpixmapregionselectorwidget.cpp:103
KPixmapRegionSelectorWidget::rotateCounterclockwise
void rotateCounterclockwise()
Rotates the current image 90º counterclockwise.
Definition: kpixmapregionselectorwidget.cpp:279
KPixmapRegionSelectorWidget::rotate
void rotate(RotateDirection direction)
Rotates the image as specified by the direction parameter, also tries to rotate the selected region s...
Definition: kpixmapregionselectorwidget.cpp:216
KPixmapRegionSelectorWidget::selectedRegion
QRect selectedRegion() const
Returns the selected region ( in zoomed pixmap coordinates )
Definition: kpixmapregionselectorwidget.cpp:129
KPixmapRegionSelectorWidget::setMaximumWidgetSize
void setMaximumWidgetSize(int width, int height)
Sets the maximum size for the widget.
Definition: kpixmapregionselectorwidget.cpp:488
KPixmapRegionSelectorWidget::RotateDirection
RotateDirection
This enum provides a rotation direction.
Definition: kpixmapregionselectorwidget.h:54
KPixmapRegionSelectorWidget::Rotate90
@ Rotate90
Rotate 90 degrees to the right.
Definition: kpixmapregionselectorwidget.h:54
KPixmapRegionSelectorWidget::Rotate180
@ Rotate180
Rotate 180 degrees.
Definition: kpixmapregionselectorwidget.h:55
KPixmapRegionSelectorWidget::Rotate270
@ Rotate270
Rotate 90 degrees to the left.
Definition: kpixmapregionselectorwidget.h:56
KPixmapRegionSelectorWidget::selectedImage
QImage selectedImage() const
Definition: kpixmapregionselectorwidget.cpp:472
QAction
QCursor
QLabel
QObject
QWidget
kaction.h
kactioncollection.h
kdebug.h
kicon.h
klocale.h
i18n
QString i18n(const char *text)
kmenu.h
kpixmapregionselectorwidget.h
None
None
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal