#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 { } }