桥接模块中的大多数项都支持 #[namespace]、#[cxx_name=…] 和 #[rust_name=…] 属性。
指定 C++ 命名空间,用于生成 extern “RustQt” 项,并用于查找 extern “C++Qt” 项。
如果项未指定命名空间,则它将继承其所在 extern 块中指定的命名空间(如果有)。否则,将使用顶级 cxx_qt::bridge 属性中指定的命名空间(如果有)。
注意:`#[namespace = "..."]` 属性不允许用于信号、方法或继承的方法。
#[cxx_qt::bridge(namespace = "cxx_qt::website")]
pub mod qobject {
#[cxx_name = “…”] 属性替换 C++ 应使用的名称。
#[rust_name = “…”] 属性替换 Rust 应使用的名称。
对于 #[qproperty],可以在属性内部提供 CXX 或 Rust 名称,例如:
#[qproperty(T, name, cxx_name = "MyName", rust_name = "my_name")]
注意:如果项具有不同的 C++ 和 Rust 标识符,则在桥接模块内部始终通过其 Rust 标识符引用,而不是其 C++ 标识符。(例如,在 `#[qenum(...)]` 属性中引用 QObject 时)
⚠️ 弃用警告:CXX-Qt <0.7 在没有指定 `#[cxx_name = "..."]` 或 `#[rust_name = "..."]` 时会自动进行大小写转换。从 CXX-Qt 0.7 开始,不再默认启用此功能!自动大小写转换将变为可选功能。
#[auto_cxx_name] 和 #[auto_rust_name] 属性可用于自动重命名 C++ 和 Rust 名称。这些属性放置在 extern “RustQt” 或 extern “C++Qt” 块的块级别,并会自动对内部项进行大小写转换,除非它们指定了 rust_name 或 cxx_name。默认情况下,#[auto_cxx_name] 会为 cxx_name 生成驼峰命名,#[auto_rust_name] 会为 rust_name 生成蛇形命名。