HAL
details_tab_widget.cpp
Go to the documentation of this file.
2 
4 
5 #include <QVBoxLayout>
6 #include <QScrollArea>
7 #include <QLabel>
8 #include <QIcon>
9 #include <QPixmap>
10 
11 namespace hal
12 {
14 
16  {
17  QScrollArea* scrollArea = new QScrollArea(this);
19  scrollArea->setWidgetResizable(true);
20 
21  QWidget* container = new QWidget(scrollArea);
23 
24  QVBoxLayout* containerlLayout = new QVBoxLayout(container);
25  containerlLayout->setContentsMargins(0, 0, 0, 0);
26  containerlLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
27  containerlLayout->setSpacing(5);
29 
30  scrollArea->setWidget(container);
31 
32  for(DetailsFrameWidget* frame : frames)
33  containerlLayout->addWidget(frame);
34 
36  return QTabWidget::addTab(scrollArea, label);
37  }
38 
39  int DetailsTabWidget::addTab(const QString& label, DetailsFrameWidget* frame, bool useScrollArea)
40  {
41  if (useScrollArea)
42  {
44  frames.append(frame);
45  return addTab(label,frames);
46  }
47  QWidget* container = new QWidget(this);
49 
50  QVBoxLayout* containerlLayout = new QVBoxLayout(container);
51  containerlLayout->setContentsMargins(0, 0, 0, 0);
52  containerlLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
53  containerlLayout->setSpacing(5);
54 
55  containerlLayout->addWidget(frame);
56  return QTabWidget::addTab(container, label);
57  }
58 
60  {
61  bool existingContainer = true;
62  QLabel* iconContainer = dynamic_cast<QLabel*>(cornerWidget());
63  if (!iconContainer)
64  {
65  existingContainer = false;
66  iconContainer = new QLabel(this);
67  }
68 
69  QPixmap scaledIcon;
70 
71  switch (SelectionDetailsIconProvider::sIconSizeSetting->value().toInt())
72  {
74  break;
76  scaledIcon = QIcon(*SelectionDetailsIconProvider::instance()->getIcon(catg,itemId)).pixmap(16, 16);
77  break;
79  //assures better quality, icon scaling so smooth, so silky
80  scaledIcon = QIcon(*SelectionDetailsIconProvider::instance()->getIcon(catg,itemId)).pixmap(24, 24);
81  break;
82  }
83 
84  iconContainer->setPixmap(scaledIcon);
85 
86  if (!existingContainer)
87  {
88  iconContainer->setContentsMargins(5, 2, 5, 1);
89  setCornerWidget(iconContainer);
90  }
91  }
92 }
int addTab(const QString &label, QList< DetailsFrameWidget * > frames)
void setIcon(SelectionDetailsIconProvider::IconCategory catg, u32 itemId=0)
DetailsTabWidget(QWidget *parent=nullptr)
static SelectionDetailsIconProvider * instance()
static SettingsItemDropdown * sIconSizeSetting
quint32 u32
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)
void addWidget(QWidget *widget, int stretch, Qt::Alignment alignment)
void setSpacing(int spacing)
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) const const
void setPixmap(const QPixmap &)
bool setAlignment(QWidget *w, Qt::Alignment alignment)
void setContentsMargins(int left, int top, int right, int bottom)
void setSizeConstraint(QLayout::SizeConstraint)
void append(const T &value)
int size() const const
void setWidget(QWidget *widget)
void setWidgetResizable(bool resizable)
AlignTop
ScrollBarAsNeeded
int addTab(QWidget *page, const QString &label)
QWidget * cornerWidget(Qt::Corner corner) const const
void setCornerWidget(QWidget *widget, Qt::Corner corner)
QWidget(QWidget *parent, Qt::WindowFlags f)
void setContentsMargins(int left, int top, int right, int bottom)
void setSizePolicy(QSizePolicy)