Sonner
A notification host with stacking, actions, positions and dismissal signals.
Loading preview…
Live C++Source and licences
#include <QApplication>
#include <QFile>
#include <QHBoxLayout>
#include <QLabel>
#include <QPainter>
#include <QStandardItemModel>
#include <QUrl>
#include <QVBoxLayout>
#include <array>
#ifdef SHADCN_GALLERY_MEDIA
#include <shadcn/media.hpp>
#endif
#include <shadcn/shadcn.hpp>
QWidget* example(QWidget* parent = nullptr) {
using namespace shadcn;
auto* canvas = new QWidget(parent);
canvas->setAutoFillBackground(true);
auto* outer = new QHBoxLayout(canvas);
outer->setContentsMargins(32, 32, 32, 32);
auto* host = new QWidget(canvas);
auto* layout = new QVBoxLayout(host);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(16);
outer->addStretch();
outer->addWidget(host, 0, Qt::AlignCenter);
outer->addStretch();
auto* notifications = new Sonner(host);
notifications->setFixedWidth(380);
notifications->addToast("Changes saved", "Your settings are up to date.", ToastType::Success, 0);
layout->addWidget(notifications);
auto* button = new Button("Show notification", host);
button->setVariant(Variant::Outline);
QObject::connect(button, &Button::clicked, notifications, [notifications] {
notifications->showToast("Event has been created", "You can undo this change.", ToastType::Default, 4000, "Undo");
});
layout->addWidget(button, 0, Qt::AlignCenter);
return canvas;
}
Installation
- Source
- Installed package
add_subdirectory(shadcn-cpp)
target_link_libraries(app PRIVATE shadcn::widgets)
find_package(shadcn CONFIG REQUIRED)
target_link_libraries(app PRIVATE shadcn::widgets)
Usage
#include <shadcn/feedback.hpp>
shadcn::Sonner sonner(parent);
sonner.attachTo(*window, shadcn::ToastPosition::BottomRight);
const int id = sonner.showToast(
"Saved", "Your changes are ready.",
shadcn::ToastType::Success, 4000, "Undo");
API
showToast returns an id. Use dismiss, dismissAll, setMaxVisible and setPosition to manage the host.
Variations
Use success, info, warning, error or loading toast types and choose one of six positions.
Keyboard and accessibility
Qt supplies native focus, keyboard interaction and accessible object roles. Give the component a visible label or an accessible name when its text alone does not explain the action.
Ownership
The parent widget owns the component. Child widgets created through a component layout follow Qt parent ownership. References returned by helper methods are borrowed.