14#include <QApplication>
18#include <QButtonGroup>
19#include <QStylePainter>
20#include <QStyleOption>
30 m_popup =
new QFrame(0, Qt::Popup);
33 m_popup->setFrameStyle(QFrame::Panel|QFrame::Raised);
35 m_arrowButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
51 QImage image(16, 16, QImage::Format_ARGB32);
54 QStylePainter painter(&image,
this);
57 option.rect = image.rect();
59 option.state = QStyle::State_Enabled;
60 option.palette.setBrush(QPalette::ButtonText, option.palette.text());
62 painter.setBrush(option.palette.text().color());
63 painter.setPen(option.palette.text().color());
64 painter.drawPrimitive(QStyle::PE_IndicatorArrowDown, option);
74 if (label.isEmpty()) {
85 delete QWidget::layout();
91 QHBoxLayout* layout =
new QHBoxLayout();
92 layout->setContentsMargins(0, 0, 0, 0);
93 layout->setSpacing(0);
99 layout->addWidget(i->label);
101 layout->addWidget(i->widget);
110 QGridLayout* layout =
new QGridLayout();
114 layout->setContentsMargins(0, 0, 0, 0);
115 layout->setSpacing(0);
117 QButtonGroup* group =
new QButtonGroup();
123 QToolButton* bn =
new QToolButton();
127 bn->setAutoRaise(
true);
132 layout->addWidget(i->label , row, 0);
133 layout->addWidget(i->widget , row, 1);
134 layout->addWidget(
buttons[row], row, 2);
137 layout->addWidget(i->widget , row, 0);
138 layout->addWidget(
buttons[row], row, 1);
140 group->addButton(
buttons[row], idx);
147 for(
int i=row; i<
buttons.size(); ++i)
168 else delete QWidget::layout();
180 QWidget* chosenWidget = 0;
184 chosenWidget = i->widget;
187 else i->chosen =
false;
194 delete QWidget::layout();
215 QSize popSize =
m_popup->size();
216 QRect popupRect(QFrame::mapToGlobal(QPoint(-1, QFrame::height())), popSize);
219 QRect screenRect = this->screen()->availableGeometry();
222 if(popupRect.right() > screenRect.right())
223 popupRect.translate(screenRect.right() - popupRect.right(), 0);
224 if(popupRect.left() < screenRect.left())
225 popupRect.translate(screenRect.left() - popupRect.left(), 0);
226 if(popupRect.bottom() > screenRect.bottom())
227 popupRect.translate(0, -popupRect.height());
229 m_popup->setGeometry(popupRect);
257 QFrame::changeEvent(e);
260 case QEvent::StyleChange:
261 case QEvent::PaletteChange:
262 case QEvent::EnabledChange:
qreal length(const QPointF &vec)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setToolbarSlider(int sliderNumber, const QString &slider)
QString buttons(const T &ev)
QIcon loadIcon(const QString &name)
rgba palette[MAX_PALETTE]