feat(tab menu): add nodes section

This commit is contained in:
parker
2025-07-15 20:29:53 +01:00
parent 7be504cc62
commit 6d00c92f0f
3 changed files with 61 additions and 24 deletions

View File

@@ -111,7 +111,6 @@ private:
if(filteredItems.size()==0) return nullptr; if(filteredItems.size()==0) return nullptr;
if(filteredItems.size()==1) return filteredItems.at(0); if(filteredItems.size()==1) return filteredItems.at(0);
std::cout << "\n\n new item " << filteredItems.size() << "\n";
QGraphicsItem* closestItem=filteredItems.at(0); QGraphicsItem* closestItem=filteredItems.at(0);
float closestDist; float closestDist;
{ {
@@ -126,7 +125,6 @@ private:
} }
closestDist = QLineF(itemPos, centerPos).length(); closestDist = QLineF(itemPos, centerPos).length();
} }
std::cout << "currentDist: " << closestDist << "\n";
for(size_t i=1; i<filteredItems.size(); ++i) for(size_t i=1; i<filteredItems.size(); ++i)
{ {
@@ -142,7 +140,6 @@ private:
itemPos = item->scenePos(); itemPos = item->scenePos();
} }
auto currentDist = QLineF(itemPos, centerPos).length(); auto currentDist = QLineF(itemPos, centerPos).length();
std::cout << "currentDist: " << currentDist << "\n";
if(currentDist < closestDist) if(currentDist < closestDist)
{ {
closestItem = item; closestItem = item;

View File

@@ -6,25 +6,63 @@
#include <qevent.h> #include <qevent.h>
#include <qlineedit.h> #include <qlineedit.h>
#include <qnamespace.h> #include <qnamespace.h>
#include <qpushbutton.h>
#include <qscrollarea.h>
#include <qwidget.h> #include <qwidget.h>
#include <QEvent> #include <QEvent>
#include <QPainterPath> #include <QPainterPath>
#include <QPushButton>
#include <string>
enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f) enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f) : QWidget(parent, f)
{ {
std::cout << "ctor\n"; setAttribute(Qt::WA_TranslucentBackground);
searchBar_ = new QLineEdit();
auto box = new QVBoxLayout(this); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
box->addWidget(searchBar_); mainLayout_ = new QVBoxLayout(this);
setLayout(mainLayout_);
searchBar_ = new QLineEdit();
nodeHolder_ = new QWidget();
nodeScrollArea_ = new QScrollArea();
nodeScrollArea_->setWidget(nodeHolder_);
nodeScrollArea_->setWidgetResizable(true);
mainLayout_->addWidget(searchBar_);
mainLayout_->addWidget(nodeScrollArea_);
nodeHolderLayout_ = new QVBoxLayout();
nodeHolder_->setLayout(nodeHolderLayout_);
for(int i=0; i<10; ++i)
{
auto button = new QPushButton(std::string("Node " + std::to_string(i)).c_str());
button->setStyleSheet(R"(
QPushButton {
background-color: #181c1d;
border: none;
padding: 0px;
border-radius: 4px;
}
QPushButton:hover {
background-color: #d0d0d0;
color: black;
}
QPushButton:pressed {
background-color: #b0b0b0;
}
)");
nodeHolderLayout_->addWidget(button);
}
// searchBar_->setFocusPolicy(Qt::NoFocus);
setDisabled(true); setDisabled(true);
} }
void enzo::ui::TabMenu::showOnMouse(float dx, float dy) void enzo::ui::TabMenu::showOnMouse(float dx, float dy)
{ {
// searchBar_->setFocusPolicy(Qt::StrongFocus);
setDisabled(false); setDisabled(false);
std::cout << "showing\n"; std::cout << "showing\n";
QPoint cursorPos = mapToParent(mapFromGlobal(QCursor::pos())); QPoint cursorPos = mapToParent(mapFromGlobal(QCursor::pos()));
@@ -32,6 +70,7 @@ void enzo::ui::TabMenu::showOnMouse(float dx, float dy)
searchBar_->clear(); searchBar_->clear();
move(cursorPos + QPoint(dx, dy)); move(cursorPos + QPoint(dx, dy));
show(); show();
adjustSize();
setFocus(); setFocus();
raise(); raise();
} }
@@ -41,7 +80,6 @@ void enzo::ui::TabMenu::focusOutEvent(QFocusEvent *event)
std::cout << "focus lost\n"; std::cout << "focus lost\n";
QWidget::focusOutEvent(event); QWidget::focusOutEvent(event);
setDisabled(true); setDisabled(true);
// searchBar_->setFocusPolicy(Qt::NoFocus);
hide(); hide();
} }
@@ -57,7 +95,8 @@ bool enzo::ui::TabMenu::event(QEvent *event)
if(event->type() == QEvent::KeyPress) if(event->type() == QEvent::KeyPress)
{ {
if(static_cast<QKeyEvent*>(event)->key()==Qt::Key_Tab) auto key = static_cast<QKeyEvent*>(event)->key();
if(key==Qt::Key_Tab || key==Qt::Key_Escape)
{ {
focusOutEvent(static_cast<QFocusEvent*>(event)); focusOutEvent(static_cast<QFocusEvent*>(event));
@@ -76,11 +115,11 @@ bool enzo::ui::TabMenu::event(QEvent *event)
} }
void enzo::ui::TabMenu::resizeEvent(QResizeEvent *event) // void enzo::ui::TabMenu::resizeEvent(QResizeEvent *event)
{ // {
QPainterPath path; // QPainterPath path;
constexpr float radius = 10; // constexpr float radius = 10;
path.addRoundedRect(contentsRect(), radius, radius); // path.addRoundedRect(contentsRect(), radius, radius);
QRegion region = QRegion(path.toFillPolygon().toPolygon()); // QRegion region = QRegion(path.toFillPolygon().toPolygon());
this->setMask(region); // this->setMask(region);
} // }

View File

@@ -2,6 +2,7 @@
#include <qlineedit.h> #include <qlineedit.h>
#include <QLabel> #include <QLabel>
#include <qscrollarea.h>
#include <qwidget.h> #include <qwidget.h>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <iostream> #include <iostream>
@@ -13,17 +14,17 @@ class TabMenu
{ {
public: public:
TabMenu(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); TabMenu(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
~TabMenu()
{
std::cout << "dtor\n";
}
void showOnMouse(float dx=0, float dy=0); void showOnMouse(float dx=0, float dy=0);
private: private:
QVBoxLayout* mainLayout_;
QLineEdit* searchBar_; QLineEdit* searchBar_;
QScrollArea* nodeScrollArea_;
QWidget* nodeHolder_;
QVBoxLayout* nodeHolderLayout_;
protected: protected:
void focusOutEvent(QFocusEvent *event) override; void focusOutEvent(QFocusEvent *event) override;
bool event(QEvent *event) override; bool event(QEvent *event) override;
void resizeEvent(QResizeEvent *event) override; // void resizeEvent(QResizeEvent *event) override;
}; };
} }