Start of Navbar

This commit is contained in:
2026-01-13 14:10:59 -07:00
parent 7713ac5d70
commit 3ed7c1b412
4 changed files with 98 additions and 0 deletions

View File

@@ -1,8 +1,29 @@
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QDebug>
#include "ui/navbar.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.resize(800, 500);
auto *layout = new QVBoxLayout(&window);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
auto *navBar = new NavBar(&window);
layout->addWidget(navBar);
layout->addStretch();
QObject::connect(navBar, &NavBar::addressEntered, [](const QString &text) {
qDebug() << "navigate to:" << text;
});
window.show();
return app.exec();
}

48
src/ui/navbar.cpp Normal file
View File

@@ -0,0 +1,48 @@
#include "navbar.h"
#include <QToolButton>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QStyle>
NavBar::NavBar(QWidget *parent)
: QWidget(parent)
{
auto *layout = new QHBoxLayout(this);
layout->setContentsMargins(6, 6, 6, 6);
layout->setSpacing(6);
m_back = new QToolButton(this);
m_back->setIcon(style()->standardIcon(QStyle::SP_ArrowBack));
m_back->setAutoRaise(true);
m_forward = new QToolButton(this);
m_forward->setIcon(style()->standardIcon(QStyle::SP_ArrowForward));
m_forward->setAutoRaise(true);
m_refresh = new QToolButton(this);
m_refresh->setIcon(style()->standardIcon(QStyle::SP_BrowserReload));
m_refresh->setAutoRaise(true);
m_address = new QLineEdit(this);
m_address->setPlaceholderText("Enter a URL");
m_address->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
layout->addWidget(m_back);
layout->addWidget(m_forward);
layout->addWidget(m_refresh);
layout->addWidget(m_address);
connect(m_back, &QToolButton::clicked, this, &NavBar::backClicked);
connect(m_forward, &QToolButton::clicked, this, &NavBar::forwardClicked);
connect(m_refresh, &QToolButton::clicked, this, &NavBar::refreshClicked);
connect(m_address, &QLineEdit::returnPressed, this, [this] {
emit addressEntered(m_address->text());
});
}
QLineEdit *NavBar::addressBar() const
{
return m_address;
}

28
src/ui/navbar.h Normal file
View File

@@ -0,0 +1,28 @@
#pragma once
#include <QWidget>
class QToolButton;
class QLineEdit;
class NavBar : public QWidget
{
Q_OBJECT
public:
explicit NavBar(QWidget *parent = nullptr);
QLineEdit *addressBar() const;
signals:
void backClicked();
void forwardClicked();
void refreshClicked();
void addressEntered(const QString &text);
private:
QToolButton *m_back;
QToolButton *m_forward;
QToolButton *m_refresh;
QLineEdit *m_address;
};