Direction
A layout direction provider for left to right and right to left content.
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* direction = new DirectionProvider(Direction::RightToLeft, host);
auto* row = new QHBoxLayout;
row->addWidget(new Button("First", direction));
row->addWidget(new Button("Second", direction));
row->addWidget(new Button("Third", direction));
direction->content().addLayout(row);
direction->content().addWidget(new QLabel("Right to left layout", direction));
layout->addWidget(direction);
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/navigation.hpp>
#include <QLabel>
shadcn::DirectionProvider rtl(
shadcn::Direction::RightToLeft, parent);
rtl.content().addWidget(
new QLabel("Arabic text", &rtl));
API
setDirection changes Qt layout direction and emits directionChanged. content() returns the owned layout.
Variations
Switch direction at the application or surface boundary.
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.