qt_core 0.3.0

Bindings for QtCore C++ library
Documentation
use qt_core::{
    ItemDataRole, QAbstractItemModel, QAbstractTableModel, QString, QStringList, QStringListModel,
};

#[test]
fn models_and_casts() {
    unsafe {
        let mut string_list = QStringList::new();
        string_list.append_q_string(&QString::from_std_str("text1"));
        string_list.append_q_string(&QString::from_std_str("text2"));
        let string_list_model = QStringListModel::from_q_string_list(&string_list);
        assert_eq!(string_list_model.row_count_0a(), 2);

        let index0 = string_list_model.index_2a(0, 0);
        assert_eq!(
            string_list_model
                .data_2a(&index0, ItemDataRole::DisplayRole.to_int())
                .to_string()
                .to_std_string(),
            "text1"
        );

        let index1 = string_list_model.index_2a(1, 0);
        assert_eq!(
            string_list_model
                .data_2a(&index1, ItemDataRole::DisplayRole.to_int())
                .to_string()
                .to_std_string(),
            "text2"
        );

        let abstract_model = string_list_model.static_upcast::<QAbstractItemModel>();
        assert_eq!(abstract_model.row_count_0a(), 2);

        let string_list_model_back = abstract_model
            .dynamic_cast::<QStringListModel>()
            .expect("dynamic_cast should be successful");
        assert_eq!(string_list_model_back.row_count_0a(), 2);

        assert!(abstract_model
            .dynamic_cast::<QAbstractTableModel>()
            .is_none());
    }
}