pub struct QrCodeWidget { /* private fields */ }Expand description
A Ratatui widget that renders a QR code.
This widget can be used to render a QR code in a terminal. It uses the qrcode crate to generate the QR code.
§Examples
use qrcode::QrCode;
use tui_qrcode::QrCodeWidget;
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code);The widget can be customized using the quiet_zone, scaling, colors, and style methods.
Additionally, the widget implements the Styled trait, so all the methods from Ratatui’s
ratatui_core::style::Stylize trait can be used.
use qrcode::QrCode;
use ratatui::style::{Style, Stylize};
use ratatui::Frame;
use tui_qrcode::{Colors, QrCodeWidget, QuietZone, Scaling};
fn render(frame: &mut Frame) {
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code)
.quiet_zone(QuietZone::Disabled)
.scaling(Scaling::Max)
.colors(Colors::Inverted)
.red()
.on_light_yellow();
frame.render_widget(widget, frame.area());
}Implementations§
Source§impl QrCodeWidget
impl QrCodeWidget
Sourcepub fn new(qr_code: QrCode) -> QrCodeWidget
pub fn new(qr_code: QrCode) -> QrCodeWidget
Create a new QR code widget.
Sourcepub const fn quiet_zone(self, quiet_zone: QuietZone) -> QrCodeWidget
pub const fn quiet_zone(self, quiet_zone: QuietZone) -> QrCodeWidget
Set whether the QR code should have a quiet zone.
This is the white border around the QR code. By default, the quiet zone is enabled.
§Example
use qrcode::QrCode;
use tui_qrcode::{QrCodeWidget, QuietZone};
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).quiet_zone(QuietZone::Disabled);Sourcepub const fn scaling(self, scaling: Scaling) -> QrCodeWidget
pub const fn scaling(self, scaling: Scaling) -> QrCodeWidget
Set how the QR code should be scaled.
By default, the QR code will be scaled so each pixel is 1x1.
The Min variant will scale the QR code so it is at least the size of the widget. This may
result in a QR code that is larger than the widget, which is not ideal. The Max variant
will scale the QR code so it is at most the size of the widget. This may result in a QR code
which is scaled more horizontally or vertically than the other, which may not be ideal. The
Exact variant will scale the QR code so each pixel is the size of the given dimensions.
The minimum scaling is 1x1 (width x height).
§Example
use qrcode::QrCode;
use tui_qrcode::{QrCodeWidget, Scaling};
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).scaling(Scaling::Max);Sourcepub const fn colors(self, colors: Colors) -> QrCodeWidget
pub const fn colors(self, colors: Colors) -> QrCodeWidget
Set the colors of the QR code.
By default, the colors are normal (light on dark).
The Normal variant will use the default colors. The Inverted variant will invert the
colors (dark on light).
To set the foreground and background colors of the widget, use the style method.
§Example
use qrcode::QrCode;
use tui_qrcode::{Colors, QrCodeWidget};
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let widget = QrCodeWidget::new(qr_code).colors(Colors::Inverted);Sourcepub fn style(self, style: impl Into<Style>) -> QrCodeWidget
pub fn style(self, style: impl Into<Style>) -> QrCodeWidget
Set the style of the widget.
This will set the foreground and background colors of the widget.
§Example
use qrcode::QrCode;
use ratatui::style::{Style, Stylize};
use tui_qrcode::QrCodeWidget;
let qr_code = QrCode::new("https://ratatui.rs").expect("failed to create QR code");
let style = Style::new().red().on_light_yellow();
let widget = QrCodeWidget::new(qr_code).style(style);Sourcepub fn size(&self, area: Rect) -> Size
pub fn size(&self, area: Rect) -> Size
The theoretical size of the QR code if rendered into area.
Note that if the QR code does not fit into area, the resulting Size might be larger
than the size of area.
§Example
use qrcode::QrCode;
use ratatui::layout::Rect;
use tui_qrcode::{QrCodeWidget, Scaling};
let qr_code = QrCode::new("https://ratatui.rs")?;
let widget = QrCodeWidget::new(qr_code).scaling(Scaling::Min);
let area = Rect::new(0, 0, 50, 50);
let widget_size = widget.size(area);
assert_eq!(widget_size.width, 66);
assert_eq!(widget_size.height, 66);Trait Implementations§
Source§impl Styled for QrCodeWidget
impl Styled for QrCodeWidget
Source§impl Widget for &QrCodeWidget
impl Widget for &QrCodeWidget
Auto Trait Implementations§
impl Freeze for QrCodeWidget
impl RefUnwindSafe for QrCodeWidget
impl Send for QrCodeWidget
impl Sync for QrCodeWidget
impl Unpin for QrCodeWidget
impl UnwindSafe for QrCodeWidget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, U> Stylize<'_, T> for Uwhere
U: Styled<Item = T>,
impl<T, U> Stylize<'_, T> for Uwhere
U: Styled<Item = T>,
fn bg<C>(self, color: C) -> T
fn fg<C>(self, color: C) -> T
fn add_modifier(self, modifier: Modifier) -> T
fn remove_modifier(self, modifier: Modifier) -> T
fn reset(self) -> T
Source§fn on_magenta(self) -> T
fn on_magenta(self) -> T
magenta.Source§fn on_dark_gray(self) -> T
fn on_dark_gray(self) -> T
dark_gray.Source§fn on_light_red(self) -> T
fn on_light_red(self) -> T
light_red.Source§fn light_green(self) -> T
fn light_green(self) -> T
light_green.Source§fn on_light_green(self) -> T
fn on_light_green(self) -> T
light_green.Source§fn light_yellow(self) -> T
fn light_yellow(self) -> T
light_yellow.Source§fn on_light_yellow(self) -> T
fn on_light_yellow(self) -> T
light_yellow.Source§fn light_blue(self) -> T
fn light_blue(self) -> T
light_blue.Source§fn on_light_blue(self) -> T
fn on_light_blue(self) -> T
light_blue.Source§fn light_magenta(self) -> T
fn light_magenta(self) -> T
light_magenta.Source§fn on_light_magenta(self) -> T
fn on_light_magenta(self) -> T
light_magenta.Source§fn light_cyan(self) -> T
fn light_cyan(self) -> T
light_cyan.Source§fn on_light_cyan(self) -> T
fn on_light_cyan(self) -> T
light_cyan.Source§fn not_italic(self) -> T
fn not_italic(self) -> T
italic modifier.Source§fn underlined(self) -> T
fn underlined(self) -> T
underlined modifier.Source§fn not_underlined(self) -> T
fn not_underlined(self) -> T
underlined modifier.Source§fn slow_blink(self) -> T
fn slow_blink(self) -> T
slow_blink modifier.Source§fn not_slow_blink(self) -> T
fn not_slow_blink(self) -> T
slow_blink modifier.Source§fn rapid_blink(self) -> T
fn rapid_blink(self) -> T
rapid_blink modifier.Source§fn not_rapid_blink(self) -> T
fn not_rapid_blink(self) -> T
rapid_blink modifier.Source§fn not_reversed(self) -> T
fn not_reversed(self) -> T
reversed modifier.hidden modifier.hidden modifier.Source§fn crossed_out(self) -> T
fn crossed_out(self) -> T
crossed_out modifier.Source§fn not_crossed_out(self) -> T
fn not_crossed_out(self) -> T
crossed_out modifier.