Start of Navbar
This commit is contained in:
@@ -11,6 +11,7 @@ qt_standard_project_setup()
|
|||||||
|
|
||||||
add_executable(CrabCrawler
|
add_executable(CrabCrawler
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
|
src/ui/navbar.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(CrabCrawler
|
target_link_libraries(CrabCrawler
|
||||||
|
|||||||
21
src/main.cpp
21
src/main.cpp
@@ -1,8 +1,29 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "ui/navbar.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication app(argc, 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();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
48
src/ui/navbar.cpp
Normal file
48
src/ui/navbar.cpp
Normal 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
28
src/ui/navbar.h
Normal 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;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user