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

KDEUI

  • sources
  • kde-4.14
  • kdelibs
  • kdeui
  • widgets
kmultitabbar.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  kmultitabbar.cpp - description
3  -------------------
4  begin : 2001
5  copyright : (C) 2001,2002,2003 by Joseph Wenninger <jowenn@kde.org>
6  ***************************************************************************/
7 
8 /***************************************************************************
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Library General Public
11  License as published by the Free Software Foundation; either
12  version 2 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Library General Public License for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with this library; see the file COPYING.LIB. If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23  ***************************************************************************/
24 
25 #include "kmultitabbar.h"
26 #include "kmultitabbar_p.h"
27 #include "kmultitabbar.moc"
28 #include "kmultitabbar_p.moc"
29 
30 #include <QtGui/QActionEvent>
31 #include <QtGui/QLayout>
32 #include <QtGui/QPainter>
33 #include <QtGui/QFontMetrics>
34 #include <QtGui/QStyle>
35 #include <QStyleOptionButton>
36 
37 #include <kiconloader.h>
38 #include <kdebug.h>
39 #include <QtGui/QApplication>
40 #include <math.h>
41 
49 class KMultiTabBarPrivate
50 {
51 public:
52  class KMultiTabBarInternal *m_internal;
53  QBoxLayout *m_l;
54  QFrame *m_btnTabSep;
55  QList<KMultiTabBarButton*> m_buttons;
56  KMultiTabBar::KMultiTabBarPosition m_position;
57 };
58 
59 
60 KMultiTabBarInternal::KMultiTabBarInternal(QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos):QFrame(parent)
61 {
62  m_position = pos;
63  if (pos == KMultiTabBar::Left || pos == KMultiTabBar::Right)
64  mainLayout=new QVBoxLayout(this);
65  else
66  mainLayout=new QHBoxLayout(this);
67  mainLayout->setMargin(0);
68  mainLayout->setSpacing(0);
69  mainLayout->addStretch();
70  setFrameStyle(NoFrame);
71  setBackgroundRole(QPalette::Background);
72 }
73 
74 KMultiTabBarInternal::~KMultiTabBarInternal()
75 {
76  qDeleteAll(m_tabs);
77  m_tabs.clear();
78 }
79 
80 void KMultiTabBarInternal::setStyle(enum KMultiTabBar::KMultiTabBarStyle style)
81 {
82  m_style=style;
83  for (int i=0;i<m_tabs.count();i++)
84  m_tabs.at(i)->setStyle(m_style);
85 
86  updateGeometry();
87 }
88 
89 void KMultiTabBarInternal::contentsMousePressEvent(QMouseEvent *ev)
90 {
91  ev->ignore();
92 }
93 
94 void KMultiTabBarInternal::mousePressEvent(QMouseEvent *ev)
95 {
96  ev->ignore();
97 }
98 
99 KMultiTabBarTab* KMultiTabBarInternal::tab(int id) const
100 {
101  QListIterator<KMultiTabBarTab*> it(m_tabs);
102  while (it.hasNext()) {
103  KMultiTabBarTab *tab = it.next();
104  if (tab->id()==id) return tab;
105  }
106  return 0;
107 }
108 
109 int KMultiTabBarInternal::appendTab(const QPixmap &pic, int id, const QString& text)
110 {
111  KMultiTabBarTab *tab;
112  m_tabs.append(tab= new KMultiTabBarTab(pic,text,id,this,m_position,m_style));
113 
114  // Insert before the stretch..
115  mainLayout->insertWidget(m_tabs.size()-1, tab);
116  tab->show();
117  return 0;
118 }
119 
120 void KMultiTabBarInternal::removeTab(int id)
121 {
122  for (int pos=0;pos<m_tabs.count();pos++)
123  {
124  if (m_tabs.at(pos)->id()==id)
125  {
126  // remove & delete the tab
127  delete m_tabs.takeAt(pos);
128  break;
129  }
130  }
131 }
132 
133 void KMultiTabBarInternal::setPosition(enum KMultiTabBar::KMultiTabBarPosition pos)
134 {
135  m_position=pos;
136  for (int i=0;i<m_tabs.count();i++)
137  m_tabs.at(i)->setPosition(m_position);
138  updateGeometry();
139 }
140 
141 // KMultiTabBarButton
143 
144 KMultiTabBarButton::KMultiTabBarButton(const QPixmap& pic, const QString& text,
145  int id, QWidget *parent)
146  : QPushButton(QIcon(pic), text, parent), m_id(id), d(0)
147 {
148  connect(this,SIGNAL(clicked()),this,SLOT(slotClicked()));
149 
150  // we can't see the focus, so don't take focus. #45557
151  // If keyboard navigation is wanted, then only the bar should take focus,
152  // and arrows could change the focused button; but generally, tabbars don't take focus anyway.
153  setFocusPolicy(Qt::NoFocus);
154 }
155 
156 KMultiTabBarButton::~KMultiTabBarButton()
157 {
158 }
159 
160 void KMultiTabBarButton::setText(const QString &text)
161 {
162  QPushButton::setText(text);
163 }
164 
165 void KMultiTabBarButton::slotClicked()
166 {
167  updateGeometry();
168  emit clicked(m_id);
169 }
170 
171 int KMultiTabBarButton::id() const
172 {
173  return m_id;
174 }
175 
176 void KMultiTabBarButton::hideEvent( QHideEvent* he) {
177  QPushButton::hideEvent(he);
178  KMultiTabBar *tb=dynamic_cast<KMultiTabBar*>(parentWidget());
179  if (tb) tb->updateSeparator();
180 }
181 
182 void KMultiTabBarButton::showEvent( QShowEvent* he) {
183  QPushButton::showEvent(he);
184  KMultiTabBar *tb=dynamic_cast<KMultiTabBar*>(parentWidget());
185  if (tb) tb->updateSeparator();
186 }
187 
188 void KMultiTabBarButton::paintEvent(QPaintEvent *) {
189  QStyleOptionButton opt;
190  opt.initFrom(this);
191  opt.icon = icon();
192  opt.iconSize = iconSize();
193  // removes the QStyleOptionButton::HasMenu ButtonFeature
194  opt.features = QStyleOptionButton::Flat;
195  QPainter painter(this);
196  style()->drawControl(QStyle::CE_PushButton, &opt, &painter, this);
197 }
198 
199 // KMultiTabBarTab
201 
202 KMultiTabBarTab::KMultiTabBarTab(const QPixmap& pic, const QString& text,
203  int id, QWidget *parent,
204  KMultiTabBar::KMultiTabBarPosition pos,
205  KMultiTabBar::KMultiTabBarStyle style)
206  : KMultiTabBarButton(pic, text, id, parent), m_style(style), d(0)
207 {
208  m_position=pos;
209  setToolTip(text);
210  setCheckable(true);
211  setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
212  // shrink down to icon only, but prefer to show text if it's there
213 }
214 
215 KMultiTabBarTab::~KMultiTabBarTab()
216 {
217 }
218 
219 void KMultiTabBarTab::setPosition(KMultiTabBar::KMultiTabBarPosition pos)
220 {
221  m_position=pos;
222  updateGeometry();
223 }
224 
225 void KMultiTabBarTab::setStyle(KMultiTabBar::KMultiTabBarStyle style)
226 {
227  m_style=style;
228  updateGeometry();
229 }
230 
231 QPixmap KMultiTabBarTab::iconPixmap() const
232 {
233  int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
234  return icon().pixmap(iconSize);
235 }
236 
237 void KMultiTabBarTab::initStyleOption(QStyleOptionToolButton* opt) const
238 {
239  opt->initFrom(this);
240 
241  // Setup icon..
242  if (!icon().isNull()) {
243  opt->iconSize = iconPixmap().size();
244  opt->icon = icon();
245  }
246 
247  // Should we draw text?
248  if (shouldDrawText())
249  opt->text = text();
250 
251  opt->state |= QStyle::State_AutoRaise;
252  if (underMouse())
253  opt->state |= QStyle::State_MouseOver | QStyle::State_Raised;
254 
255  if (isChecked())
256  opt->state |= QStyle::State_Sunken | QStyle::State_On;
257 
258  opt->font = font();
259  opt->toolButtonStyle = shouldDrawText() ? Qt::ToolButtonTextBesideIcon : Qt::ToolButtonIconOnly;
260  opt->subControls = QStyle::SC_ToolButton;
261 }
262 
263 QSize KMultiTabBarTab::sizeHint() const
264 {
265  return computeSizeHint(shouldDrawText());
266 }
267 
268 QSize KMultiTabBarTab::minimumSizeHint() const
269 {
270  return computeSizeHint(false);
271 }
272 
273 void KMultiTabBarTab::computeMargins(int* hMargin, int* vMargin) const
274 {
275  // Unfortunately, QStyle does not give us enough information to figure out
276  // where to place things, so we try to reverse-engineer it
277  QStyleOptionToolButton opt;
278  initStyleOption(&opt);
279 
280  QPixmap iconPix = iconPixmap();
281  QSize trialSize = iconPix.size();
282  QSize expandSize = style()->sizeFromContents(QStyle::CT_ToolButton, &opt, trialSize, this);
283 
284  *hMargin = (expandSize.width() - trialSize.width())/2;
285  *vMargin = (expandSize.height() - trialSize.height())/2;
286 }
287 
288 QSize KMultiTabBarTab::computeSizeHint(bool withText) const
289 {
290  // Compute as horizontal first, then flip around if need be.
291  QStyleOptionToolButton opt;
292  initStyleOption(&opt);
293 
294  int hMargin, vMargin;
295  computeMargins(&hMargin, &vMargin);
296 
297  // Compute interior size, starting from pixmap..
298  QPixmap iconPix = iconPixmap();
299  QSize size = iconPix.size();
300 
301  // Always include text height in computation, to avoid resizing the minor direction
302  // when expanding text..
303  QSize textSize = fontMetrics().size(0, text());
304  size.setHeight(qMax(size.height(), textSize.height()));
305 
306  // Pick margins for major/minor direction, depending on orientation
307  int majorMargin = isVertical() ? vMargin : hMargin;
308  int minorMargin = isVertical() ? hMargin : vMargin;
309 
310  size.setWidth (size.width() + 2*majorMargin);
311  size.setHeight(size.height() + 2*minorMargin);
312 
313  if (withText)
314  // Add enough room for the text, and an extra major margin.
315  size.setWidth(size.width() + textSize.width() + majorMargin);
316 
317  // flip time?
318  if (isVertical())
319  return QSize(size.height(), size.width());
320  else
321  return size;
322 }
323 
324 void KMultiTabBarTab::setState(bool newState)
325 {
326  setChecked(newState);
327  updateGeometry();
328 }
329 
330 void KMultiTabBarTab::setIcon(const QString& icon)
331 {
332  QPixmap pic=SmallIcon(icon);
333  setIcon(pic);
334 }
335 
336 void KMultiTabBarTab::setIcon(const QPixmap& icon)
337 {
338  QPushButton::setIcon(icon);
339 }
340 
341 bool KMultiTabBarTab::shouldDrawText() const
342 {
343  return (m_style==KMultiTabBar::KDEV3ICON) || isChecked();
344 }
345 
346 bool KMultiTabBarTab::isVertical() const
347 {
348  return m_position==KMultiTabBar::Right || m_position==KMultiTabBar::Left;
349 }
350 
351 void KMultiTabBarTab::paintEvent(QPaintEvent*) {
352  QPainter painter(this);
353 
354  QStyleOptionToolButton opt;
355  initStyleOption(&opt);
356 
357  // Paint bevel..
358  if (underMouse() || isChecked()) {
359  opt.text.clear();
360  opt.icon = QIcon();
361  style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &painter, this);
362  }
363 
364  int hMargin, vMargin;
365  computeMargins(&hMargin, &vMargin);
366 
367  // We first figure out how much room we have for the text, based on
368  // icon size and margin, try to fit in by eliding, and perhaps
369  // give up on drawing the text entirely if we're too short on room
370  QPixmap icon = iconPixmap();
371  int textRoom = 0;
372  int iconRoom = 0;
373 
374  QString t;
375  if (shouldDrawText()) {
376  if (isVertical()) {
377  iconRoom = icon.height() + 2*vMargin;
378  textRoom = height() - iconRoom - vMargin;
379  } else {
380  iconRoom = icon.width() + 2*hMargin;
381  textRoom = width() - iconRoom - hMargin;
382  }
383 
384  t = painter.fontMetrics().elidedText(text(), Qt::ElideRight, textRoom);
385 
386  // See whether anything is left. Qt will return either
387  // ... or the ellipsis unicode character, 0x2026
388  if (t == QLatin1String("...") || t == QChar(0x2026))
389  t.clear();
390  }
391 
392  // Label time.... Simple case: no text, so just plop down the icon right in the center
393  // We only do this when the button never draws the text, to avoid jumps in icon position
394  // when resizing
395  if (!shouldDrawText()) {
396  style()->drawItemPixmap(&painter, rect(), Qt::AlignCenter | Qt::AlignVCenter, icon);
397  return;
398  }
399 
400  // Now where the icon/text goes depends on text direction and tab position
401  QRect iconArea;
402  QRect labelArea;
403 
404  bool bottomIcon = false;
405  bool rtl = layoutDirection() == Qt::RightToLeft;
406  if (isVertical()) {
407  if (m_position == KMultiTabBar::Left && !rtl)
408  bottomIcon = true;
409  if (m_position == KMultiTabBar::Right && rtl)
410  bottomIcon = true;
411  }
412  //alignFlags = Qt::AlignLeading | Qt::AlignVCenter;
413 
414  if (isVertical()) {
415  if (bottomIcon) {
416  labelArea = QRect(0, vMargin, width(), textRoom);
417  iconArea = QRect(0, vMargin + textRoom, width(), iconRoom);
418  } else {
419  labelArea = QRect(0, iconRoom, width(), textRoom);
420  iconArea = QRect(0, 0, width(), iconRoom);
421  }
422  } else {
423  // Pretty simple --- depends only on RTL/LTR
424  if (rtl) {
425  labelArea = QRect(hMargin, 0, textRoom, height());
426  iconArea = QRect(hMargin + textRoom, 0, iconRoom, height());
427  } else {
428  labelArea = QRect(iconRoom, 0, textRoom, height());
429  iconArea = QRect(0, 0, iconRoom, height());
430  }
431  }
432 
433  style()->drawItemPixmap(&painter, iconArea, Qt::AlignCenter | Qt::AlignVCenter, icon);
434 
435  if (t.isEmpty())
436  return;
437 
438  QRect labelPaintArea = labelArea;
439 
440  if (isVertical()) {
441  // If we're vertical, we paint to a simple 0,0 origin rect,
442  // and get the transformations to get us in the right place
443  labelPaintArea = QRect(0, 0, labelArea.height(), labelArea.width());
444 
445  QTransform tr;
446 
447  if (bottomIcon) {
448  tr.translate(labelArea.x(), labelPaintArea.width() + labelArea.y());
449  tr.rotate(-90);
450  } else {
451  tr.translate(labelPaintArea.height() + labelArea.x(), labelArea.y());
452  tr.rotate(90);
453  }
454  painter.setTransform(tr);
455  }
456 
457  style()->drawItemText(&painter, labelPaintArea, Qt::AlignLeading | Qt::AlignVCenter,
458  palette(), true, t, QPalette::ButtonText);
459 }
460 
461 // KMultiTabBar
463 
464 KMultiTabBar::KMultiTabBar(KMultiTabBarPosition pos, QWidget *parent)
465  : QWidget(parent),
466  d(new KMultiTabBarPrivate)
467 {
468  if (pos == Left || pos == Right)
469  {
470  d->m_l=new QVBoxLayout(this);
471  setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding/*, true*/);
472  }
473  else
474  {
475  d->m_l=new QHBoxLayout(this);
476  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed/*, true*/);
477  }
478  d->m_l->setMargin(0);
479  d->m_l->setSpacing(0);
480 
481  d->m_internal=new KMultiTabBarInternal(this, pos);
482  setPosition(pos);
483  setStyle(VSNET);
484  d->m_l->insertWidget(0,d->m_internal);
485  d->m_l->insertWidget(0,d->m_btnTabSep=new QFrame(this));
486  d->m_btnTabSep->setFixedHeight(4);
487  d->m_btnTabSep->setFrameStyle(QFrame::Panel | QFrame::Sunken);
488  d->m_btnTabSep->setLineWidth(2);
489  d->m_btnTabSep->hide();
490 
491  updateGeometry();
492 }
493 
494 KMultiTabBar::~KMultiTabBar()
495 {
496  qDeleteAll( d->m_buttons );
497  d->m_buttons.clear();
498  delete d;
499 }
500 
501 int KMultiTabBar::appendButton(const QPixmap &pic, int id, QMenu *popup, const QString&)
502 {
503  KMultiTabBarButton *btn = new KMultiTabBarButton(pic, QString(), id, this);
504  // a button with a QMenu can have another size. Make sure the button has always the same size.
505  btn->setFixedWidth(btn->height());
506  btn->setMenu(popup);
507  d->m_buttons.append(btn);
508  d->m_l->insertWidget(0,btn);
509  btn->show();
510  d->m_btnTabSep->show();
511  return 0;
512 }
513 
514 void KMultiTabBar::updateSeparator() {
515  bool hideSep=true;
516  QListIterator<KMultiTabBarButton*> it(d->m_buttons);
517  while (it.hasNext()){
518  if (it.next()->isVisibleTo(this)) {
519  hideSep=false;
520  break;
521  }
522  }
523  if (hideSep)
524  d->m_btnTabSep->hide();
525  else
526  d->m_btnTabSep->show();
527 }
528 
529 int KMultiTabBar::appendTab(const QPixmap &pic, int id, const QString& text)
530 {
531  d->m_internal->appendTab(pic,id,text);
532  return 0;
533 }
534 
535 KMultiTabBarButton* KMultiTabBar::button(int id) const
536 {
537  QListIterator<KMultiTabBarButton*> it(d->m_buttons);
538  while ( it.hasNext() ) {
539  KMultiTabBarButton *button = it.next();
540  if ( button->id() == id )
541  return button;
542  }
543 
544  return 0;
545 }
546 
547 KMultiTabBarTab* KMultiTabBar::tab(int id) const
548 {
549  return d->m_internal->tab(id);
550 }
551 
552 void KMultiTabBar::removeButton(int id)
553 {
554  for (int pos=0;pos<d->m_buttons.count();pos++)
555  {
556  if (d->m_buttons.at(pos)->id()==id)
557  {
558  d->m_buttons.takeAt(pos)->deleteLater();
559  break;
560  }
561  }
562 
563  if (d->m_buttons.count()==0)
564  d->m_btnTabSep->hide();
565 }
566 
567 void KMultiTabBar::removeTab(int id)
568 {
569  d->m_internal->removeTab(id);
570 }
571 
572 void KMultiTabBar::setTab(int id,bool state)
573 {
574  KMultiTabBarTab *ttab=tab(id);
575  if (ttab)
576  ttab->setState(state);
577 }
578 
579 bool KMultiTabBar::isTabRaised(int id) const
580 {
581  KMultiTabBarTab *ttab=tab(id);
582  if (ttab)
583  return ttab->isChecked();
584 
585  return false;
586 }
587 
588 void KMultiTabBar::setStyle(KMultiTabBarStyle style)
589 {
590  d->m_internal->setStyle(style);
591 }
592 
593 KMultiTabBar::KMultiTabBarStyle KMultiTabBar::tabStyle() const
594 {
595  return d->m_internal->m_style;
596 }
597 
598 void KMultiTabBar::setPosition(KMultiTabBarPosition pos)
599 {
600  d->m_position=pos;
601  d->m_internal->setPosition(pos);
602 }
603 
604 KMultiTabBar::KMultiTabBarPosition KMultiTabBar::position() const
605 {
606  return d->m_position;
607 }
608 
609 void KMultiTabBar::fontChange(const QFont& /* oldFont */)
610 {
611  updateGeometry();
612 }
613 
614 // vim: ts=4 sw=4 noet
615 // kate: indent-width 4; replace-tabs off; tab-width 4; space-indent off;
KMultiTabBar::tab
class KMultiTabBarTab * tab(int id) const
get a pointer to a tab within the tab area, identiifed by its ID
Definition: kmultitabbar.cpp:547
QHideEvent
QTransform
QPainter::setTransform
void setTransform(const QTransform &transform, bool combine)
QPushButton::setMenu
void setMenu(QMenu *menu)
QPixmap::size
QSize size() const
QWidget
KMultiTabBar::~KMultiTabBar
virtual ~KMultiTabBar()
Definition: kmultitabbar.cpp:494
QWidget::underMouse
bool underMouse() const
QSize::setHeight
void setHeight(int height)
QWidget::palette
const QPalette & palette() const
QSize::width
int width() const
KMultiTabBar::KMultiTabBarPosition
KMultiTabBarPosition
Definition: kmultitabbar.h:64
QPixmap::width
int width() const
kdebug.h
KMultiTabBarButton::clicked
void clicked(int id)
this is emitted if the button is clicked
QListIterator::next
const T & next()
QWidget::setFixedWidth
void setFixedWidth(int w)
QWidget::updateGeometry
void updateGeometry()
KMultiTabBarTab::~KMultiTabBarTab
virtual ~KMultiTabBarTab()
Definition: kmultitabbar.cpp:215
KMultiTabBar::Right
Definition: kmultitabbar.h:64
KMultiTabBar::updateSeparator
void updateSeparator()
Definition: kmultitabbar.cpp:514
KMultiTabBar::button
class KMultiTabBarButton * button(int id) const
get a pointer to a button within the button area identified by its ID
Definition: kmultitabbar.cpp:535
QWidget::setFocusPolicy
void setFocusPolicy(Qt::FocusPolicy policy)
QChar
QFont
QWidget::style
QStyle * style() const
QStyle::pixelMetric
virtual int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const =0
QHBoxLayout
KMultiTabBarButton::paintEvent
virtual void paintEvent(class QPaintEvent *)
Definition: kmultitabbar.cpp:188
QRect::height
int height() const
QStyleOptionToolButton
QRect::x
int x() const
QRect::y
int y() const
kiconloader.h
QMouseEvent
KMultiTabBar::KMultiTabBarButton
friend class KMultiTabBarButton
Definition: kmultitabbar.h:145
KMultiTabBarButton::~KMultiTabBarButton
virtual ~KMultiTabBarButton()
Definition: kmultitabbar.cpp:156
KMultiTabBar::isTabRaised
bool isTabRaised(int id) const
return the state of a tab, identified by its ID
Definition: kmultitabbar.cpp:579
QAbstractButton::icon
QIcon icon() const
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
QStyleOptionButton
QIcon::pixmap
QPixmap pixmap(const QSize &size, Mode mode, State state) const
KMultiTabBarTab::setPosition
void setPosition(KMultiTabBar::KMultiTabBarPosition)
this is used internaly, but can be used by the user, if (s)he wants to It the according call of KMult...
Definition: kmultitabbar.cpp:219
QString::clear
void clear()
KMultiTabBar::KDEV3ICON
Definition: kmultitabbar.h:71
QStyleOption::initFrom
void initFrom(const QWidget *widget)
QWidget::width
int width() const
QWidget::size
QSize size() const
KMultiTabBarButton::setText
void setText(const QString &text)
Definition: kmultitabbar.cpp:160
KMultiTabBar::VSNET
Definition: kmultitabbar.h:71
QRect
KMultiTabBarTab
Use KMultiTabBar::appendTab to append a tab, which creates a KMultiTabBarTab instance.
Definition: kmultitabbar.h:192
QWidget::showEvent
virtual void showEvent(QShowEvent *event)
KMultiTabBar::tabStyle
KMultiTabBarStyle tabStyle() const
get the display style of the tabs
QEvent::ignore
void ignore()
KMultiTabBar::setPosition
void setPosition(KMultiTabBarPosition pos)
set the real position of the widget.
Definition: kmultitabbar.cpp:598
QWidget::layoutDirection
Qt::LayoutDirection layoutDirection() const
QShowEvent
QWidget::hideEvent
virtual void hideEvent(QHideEvent *event)
QAbstractButton::iconSize
QSize iconSize() const
QSize::setWidth
void setWidth(int width)
QPainter
QString::isEmpty
bool isEmpty() const
QFontMetrics::elidedText
QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags) const
KMultiTabBarButton::id
int id() const
Definition: kmultitabbar.cpp:171
QWidget::pos
QPoint pos() const
QVBoxLayout
KMultiTabBar
A Widget for horizontal and vertical tabs.
Definition: kmultitabbar.h:57
QStyle::drawItemText
virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const
QAbstractButton::setCheckable
void setCheckable(bool)
QString
QList< KMultiTabBarButton * >
KMultiTabBarButton::hideEvent
virtual void hideEvent(class QHideEvent *)
Definition: kmultitabbar.cpp:176
QWidget::setSizePolicy
void setSizePolicy(QSizePolicy)
KMultiTabBarTab::paintEvent
virtual void paintEvent(QPaintEvent *)
Definition: kmultitabbar.cpp:351
QWidget::rect
QRect rect() const
QPixmap
KMultiTabBar::appendButton
int appendButton(const QPixmap &pic, int id=-1, QMenu *popup=0, const QString &not_used_yet=QString())
append a new button to the button area.
Definition: kmultitabbar.cpp:501
KMultiTabBarTab::setIcon
void setIcon(const QString &)
Definition: kmultitabbar.cpp:330
QMenu
QSize
QPixmap::height
int height() const
QWidget::font
const QFont & font() const
QStyle::drawItemPixmap
virtual void drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap) const
QFrame
KMultiTabBar::Left
Definition: kmultitabbar.h:64
KMultiTabBar::position
KMultiTabBarPosition position() const
get the tabbar position.
KMultiTabBar::appendTab
int appendTab(const QPixmap &pic, int id=-1, const QString &text=QString())
append a new tab to the tab area.
Definition: kmultitabbar.cpp:529
QAbstractButton::isChecked
bool isChecked() const
KMultiTabBarTab::setState
void setState(bool state)
set the active state of the tab
Definition: kmultitabbar.cpp:324
KMultiTabBarTab::sizeHint
virtual QSize sizeHint() const
Definition: kmultitabbar.cpp:263
QRect::width
int width() const
QWidget::fontMetrics
QFontMetrics fontMetrics() const
QLatin1String
KMultiTabBarTab::setStyle
void setStyle(KMultiTabBar::KMultiTabBarStyle)
this is used internaly, but can be used by the user, if (s)he wants to It the according call of KMult...
Definition: kmultitabbar.cpp:225
KMultiTabBar::KMultiTabBar
KMultiTabBar(KMultiTabBarPosition pos, QWidget *parent=0)
Definition: kmultitabbar.cpp:464
QPainter::fontMetrics
QFontMetrics fontMetrics() const
QWidget::parentWidget
QWidget * parentWidget() const
QStyle::drawControl
virtual void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const =0
QSize::height
int height() const
KMultiTabBar::removeTab
void removeTab(int id)
remove a tab with a given ID
Definition: kmultitabbar.cpp:567
SmallIcon
QPixmap SmallIcon(const QString &name, int force_size, int state, const QStringList &overlays)
Definition: kiconloader.cpp:1553
KMultiTabBar::KMultiTabBarStyle
KMultiTabBarStyle
The list of available styles for KMultiTabBar.
Definition: kmultitabbar.h:71
KMultiTabBarTab::minimumSizeHint
virtual QSize minimumSizeHint() const
Definition: kmultitabbar.cpp:268
KMultiTabBarButton::slotClicked
virtual void slotClicked()
Definition: kmultitabbar.cpp:165
QAbstractButton::setText
void setText(const QString &text)
QStyle::drawComplexControl
virtual void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const =0
QPushButton
KMultiTabBar::setTab
void setTab(int id, bool state)
set a tab to "raised"
Definition: kmultitabbar.cpp:572
QListIterator
QFontMetrics::size
QSize size(int flags, const QString &text, int tabStops, int *tabArray) const
QWidget::show
void show()
QWidget::setToolTip
void setToolTip(const QString &)
QPaintEvent
KMultiTabBarButton::KMultiTabBarButton
KMultiTabBarButton(const QPixmap &pic, const QString &, int id, QWidget *parent)
Should not be created directly.
Definition: kmultitabbar.cpp:144
kmultitabbar.h
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KMultiTabBarButton::showEvent
virtual void showEvent(class QShowEvent *)
Definition: kmultitabbar.cpp:182
KMultiTabBarButton
Use KMultiTabBar::appendButton to append a button, which creates a KMultiTabBarButton instance...
Definition: kmultitabbar.h:155
QBoxLayout
QStyle::sizeFromContents
virtual QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &contentsSize, const QWidget *widget) const =0
KMultiTabBar::setStyle
void setStyle(KMultiTabBarStyle style)
set the display style of the tabs
Definition: kmultitabbar.cpp:588
KMultiTabBar::removeButton
void removeButton(int id)
remove a button with the given ID
Definition: kmultitabbar.cpp:552
QWidget::height
int height() const
QIcon
KMultiTabBar::fontChange
virtual void fontChange(const QFont &)
Definition: kmultitabbar.cpp:609
QListIterator::hasNext
bool hasNext() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:23:59 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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

Search



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