当前位置: 首页 > wzjs >正文

什么样的水平可以做网站seo网站关键词优化软件

什么样的水平可以做网站,seo网站关键词优化软件,做国内贸易的网站,wordpress全平台解决方案Rust Qt 对象可以作为属性或参数相互嵌套。 嵌套对象通过指向其 QObject 表示的指针来引用。 首先,在桥接模块的 extern 块中正常定义一个类型。 extern "RustQt" {#[qobject]#[qml_element]#[qproperty(i32, counter)]type InnerObject super::Inner…

Rust Qt 对象可以作为属性或参数相互嵌套。

嵌套对象通过指向其 QObject 表示的指针来引用。

首先,在桥接模块的 extern 块中正常定义一个类型。

extern "RustQt" {#[qobject]#[qml_element]#[qproperty(i32, counter)]type InnerObject = super::InnerObjectRust;
}

然后,可以通过使用 *mut T 将其作为属性、可调用方法的参数或信号参数使用。如下例所示,将 InnerObject 嵌套到 OuterObject 中。

需要使用 C++ CXX 类型作为 `T` 类型,而不是 Rust 结构体。
要访问嵌套对象的可变可调用方法和属性设置器,需要将 `*mut T` 转换为 `Pin<&mut T>`。
#[cxx_qt::bridge]
pub mod qobject {extern "RustQt" {#[qobject]#[qml_element]#[qproperty(i32, counter)]type InnerObject = super::InnerObjectRust;}extern "RustQt" {/// 一个信号,展示如何将另一个 QObject 作为参数引用////// # 安全性////// 由于使用了裸指针,这在 CXX 中被视为不安全#[qsignal]unsafe fn called(self: Pin<&mut InnerObject>, inner: *mut InnerObject);}extern "RustQt" {#[qobject]#[qml_element]#[qproperty(*mut InnerObject, inner)]type OuterObject = super::OuterObjectRust;/// 一个信号,展示如何将另一个 QObject 作为参数引用////// # 安全性////// 由于使用了裸指针,这在 CXX 中被视为不安全#[qsignal]unsafe fn called(self: Pin<&mut OuterObject>, inner: *mut InnerObject);}unsafe extern "RustQt" {/// 打印给定内部 QObject 的计数////// # 安全性////// 由于在公共方法中解引用指针,这需要标记为不安全#[qinvokable]#[cxx_name = "printCount"]unsafe fn print_count(self: Pin<&mut OuterObject>, inner: *mut InnerObject);/// 重置存储在 Q_PROPERTY 中的内部 QObject 的计数器#[qinvokable]fn reset(self: Pin<&mut OuterObject>);}impl cxx_qt::Constructor<()> for OuterObject {}
}use core::pin::Pin;/// 内部 QObject
#[derive(Default)]
pub struct InnerObjectRust {counter: i32,
}/// 外部 QObject,具有指向内部 QObject 的 Q_PROPERTY
pub struct OuterObjectRust {inner: *mut qobject::InnerObject,
}impl Default for OuterObjectRust {fn default() -> Self {Self {inner: std::ptr::null_mut(),}}
}impl qobject::OuterObject {/// 打印给定内部 QObject 的计数////// # 安全性////// 由于在公共方法中解引用指针,这需要标记为不安全pub unsafe fn print_count(self: Pin<&mut Self>, inner: *mut qobject::InnerObject) {if let Some(inner) = inner.as_ref() {println!("内部对象的计数器属性: {}", inner.counter());}self.called(inner);}/// 重置存储在 Q_PROPERTY 中的内部 QObject 的计数器pub fn reset(self: Pin<&mut Self>) {// 需要将 *mut T 转换为 Pin<&mut T>,以便访问方法if let Some(inner) = unsafe { self.inner().as_mut() } {let pinned_inner = unsafe { Pin::new_unchecked(inner) };// 现在可以像平常一样使用 pinned_innerpinned_inner.set_counter(10);}// 获取 *mut Tlet inner = *self.inner();unsafe { self.called(inner) };}
}impl cxx_qt::Initialize for qobject::OuterObject {/// 初始化 QObject,将一个信号连接到另一个信号fn initialize(self: core::pin::Pin<&mut Self>) {// 示例:将一个 QObject 的信号连接到另一个 QObject 的信号// 这将触发 OuterObject::Called 以触发 InnerObject::Calledself.on_called(|qobject, obj| {// 需要将 *mut T 转换为 Pin<&mut T>,以便访问方法if let Some(inner) = unsafe { qobject.inner().as_mut() } {let pinned_inner = unsafe { Pin::new_unchecked(inner) };// 现在可以像平常一样使用 pinned_innerunsafe {pinned_inner.called(obj);}}}).release();}
}
http://www.dtcms.com/wzjs/467329.html

相关文章:

  • 陕西省人民政府采购网广州市口碑seo推广
  • 营销型网站分类google关键词搜索技巧
  • 赤峰网站策划百度推广渠道商
  • 如何找做网站的公司我想做app推广怎么做
  • 武汉高端企业网站建设中国网络优化公司排名
  • 网站建设改版沈阳网页建站模板
  • 网站谷歌seo做哪些网站流量统计软件
  • 武汉商城网站开发公司百度投诉中心入口
  • php和什么语言做网站东莞谷歌推广
  • 湘潭什么网站做c1题目关键词优化排名用什么软件比较好
  • 广州网站建设公众号推广一个6元
  • wordpress 需要缓存上海seo优化培训机构
  • 折800 网站模板网站长尾关键词排名软件
  • 厦门手机网站制作长沙网红打卡地
  • 郴州高椅岭安卓优化神器
  • 崇信县人民政府网站成都seo优化公司排名
  • 个人网站免备案吗首页百度
  • 手机版免费申请微网站福州模板建站哪家好
  • 黑龙江省建设教育信息网站seo标题优化分析范文
  • 北京海淀区网站建设微信广告推广价格表
  • 网络工作室创业项目seo行业岗位
  • ui设计培训项目湖南seo优化按天付费
  • 博彩类网站开发源代码广州网站优化推广
  • 杭州企业网站建设百度seo推广软件
  • 张家港优化网站seosemester
  • 网站建设教育国家市场监管总局
  • 开源网站后台网店代运营骗局
  • 在什么网站做兼职翻译网站建设网站推广
  • 小的电商网站青岛seo用户体验
  • dede网站版权信息修改谷歌商店下载