Provides several convenience closure taking methods to rust-qt.
Even though Qt's signal and slot mechanism is quite powerful and allows for very dynamic code and programming model, defining slots, especially on the Rust side, can be verbose and filled with boilerplate. You might just need to quickly debug something or add some simple functionality to a widget without having to go through the ritual of defining slots.
For example, compare the following 2 programs. Both programs do the same thing, the first uses this crate, and uses closures without having to define slots or deriving SlotNoArgs/SlotOfBool/SlotOfQString etc. The second doesn't use closures, it defines slots for the required signals, it requires importing SlotNoArgs/SlotOfBool/SlotOfQString boilerplate, and using the correct Slot type.
The first program (with closures): ```rust,norun // with closures use qtcb::prelude::*; use qtcore::qs; use qtwidgets::{ QApplication, QCheckBox, QHBoxLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget, };
fn main() { QApplication::init(|| unsafe { QApplication::setstyleqstring(&qs("Fusion")); let win = QWidget::new0a(); win.setfixedsize2a(400, 300); let vbox = QVBoxLayout::new1a(&win); let ed = QLineEdit::new(); ed.setplaceholdertext(&qs("Enter name")); ed.ontextchanged(|ed, txt| { println!("current lineedit text: {}", txt.tostdstring()); }); vbox.addwidget(&ed); let hbox = QHBoxLayout::new0a(); vbox.addlayout1a(&hbox); let checkbox = QCheckBox::new(); hbox.addwidget(&checkbox); checkbox.settext(&qs("Check me!")); checkbox.onclicked(|b, checked| { println!( "{} is {}checked", b.text().tostdstring(), if checked { "" } else { "un" } ); }); let button = QPushButton::new(); hbox.addwidget(&button); button.settext(&qs("Greet!")); button.onpressed(move |b| { println!("Hello {}", ed.text().tostd_string()); }); win.show(); QApplication::exec() }) } ```
The second program (no closures): ```rust,norun // no closures use cppcore::{Ptr, Ref, StaticUpcast}; use qtcore::{qs, slot, QBox, QObject, QString, SlotNoArgs, SlotOfBool, SlotOfQString}; use qtwidgets::{ QApplication, QCheckBox, QHBoxLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget, }; use std::rc::Rc;
struct Form {
win: QBox
impl StaticUpcast
impl Form { fn new() -> Rc