feat: tab menu search bar

This commit is contained in:
parker
2025-07-15 15:01:30 +01:00
parent 4e110b30c2
commit a6ceaec122
4 changed files with 94 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
#include "Gui/Network/TabMenu.h"
#include <QLabel>
#include <QLineEdit>
#include <iostream>
#include <qapplication.h>
#include <qlineedit.h>
#include <qwidget.h>
#include <QEvent>
enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f)
{
setFocusPolicy(Qt::StrongFocus);
searchBar_ = new QLineEdit("hello world");
auto box = new QVBoxLayout(this);
box->addWidget(searchBar_);
}
void enzo::ui::TabMenu::showOnMouse(float dx, float dy)
{
QPoint cursorPos = mapFromGlobal(QCursor::pos());
std::cout << "inside" << cursorPos.x() << " " << cursorPos.y() << "\n";
move(cursorPos + QPoint(dx, dy));
show();
setFocus();
}
void enzo::ui::TabMenu::focusOutEvent(QFocusEvent *event)
{
std::cout << "focus lost\n";
QWidget::focusOutEvent(event);
close();
}
bool enzo::ui::TabMenu::event(QEvent *event)
{
if(
event->type() == QEvent::KeyPress ||
event->type() == QEvent::KeyRelease
)
{
QApplication::postEvent(searchBar_, event->clone());
return true;
}
return QWidget::event(event);
}
// void enzo::ui::TabMenu::keyPressEvent(QKeyEvent *event)
// {
// searchBar_->keyPressEvent(event);
// }
// void enzo::ui::TabMenu::keyReleaseEvent(QKeyEvent *event)
// {
// }

24
src/Gui/Network/TabMenu.h Normal file
View File

@@ -0,0 +1,24 @@
#pragma once
#include <qlineedit.h>
#include <qwidget.h>
#include <QVBoxLayout>
namespace enzo::ui
{
class TabMenu
: public QWidget
{
public:
TabMenu(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
void showOnMouse(float dx=0, float dy=0);
private:
QLineEdit* searchBar_;
protected:
void focusOutEvent(QFocusEvent *event) override;
bool event(QEvent *event) override;
// void keyPressEvent(QKeyEvent *event) override;
// void keyReleaseEvent(QKeyEvent *event) override;
};
}