#include "lts_tool_box.h" #include "lts_drag_icon.h" #include "lts_grid_layout.h" #include #include #include using namespace LtsWidgets; LtsToolBox::LtsToolBox(QWidget *parent) : QToolBox(parent) { setMinimumSize(17, 200); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, &LtsToolBox::customContextMenuRequested, this, &LtsToolBox::showContextMenu); setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); } LtsToolBox::~LtsToolBox() { } void LtsToolBox::resizeEvent(QResizeEvent *e) { emit resized(e); QToolBox::resizeEvent(e); } void LtsToolBox::addItem(QWidget *widget, const QString &text) { setMinimumSize(120, 100); QToolBox::addItem(widget, text); } void LtsToolBox::showContextMenu(const QPoint &pos) { QPoint globalPos = this->mapToGlobal(pos); QMenu myMenu; myMenu.addAction(tr("Icon and Text")); QAction *to = myMenu.addAction(tr("Text Only")); QAction *io = myMenu.addAction(tr("Icon Only")); QAction *selectedItem = myMenu.exec(globalPos); if (selectedItem) { ButtonStyle newStyle = ButtonStyle::eTextNextToIcon; if (selectedItem == to) newStyle = ButtonStyle::eTextOnly; if (selectedItem == io) newStyle = ButtonStyle::eIconOnly; for (int i = 0; i < count(); i++) { const QList list = widget(i)->findChildren(); for (LtsDragIcon *icon : list) icon->setButtonStyle(newStyle); LtsGridLayout *lay = qobject_cast(widget(i)->layout()); if (lay) lay->setAutoSize((newStyle == ButtonStyle::eIconOnly)); } } else { } }