【VS Code 与 Qt6】运用事件过滤器批量操作子级组件-天天速递

2023-06-11 21:33:47 来源: 博客园

如果某个派生自 QObject 的类重写 eventFilter 方法,那它就成了事件过滤器(Event Filter)。该方法的声明如下:

virtual bool eventFilter(QObject *watched, QEvent *event);

watched 参数是监听事件的对象,即事件的接收者;event 参数当然就是待处理的事件了。事件过滤器(也可以翻译为“筛选器”)可在接收者之前拦截事件,处理完毕后还可以决定是否把事件转发给接收者。如果不想转发给事件接收者,就返回 true;若还想让事件继续传播就返回 false。

这玩意儿最有益的用途就是:你的顶层窗口上有 K 个子级组件(正常情形是 QWidget 的子类),如果组件没有定义你想用的信号,只能通过处理事件的途径解决,可你又不想只为了处理一个事件就派生一个类(比如,QLabel组件在鼠标悬浮时做点事情),就可以用上事件过滤器了。顶层窗口类重写 eventFilter 方法,拦截发往子组件的事件(如mouseMove)直接处理,这样能节省 N 百行代码。


(资料图片仅供参考)

重写了 eventFilter 方法的类就成了事件的过滤者,而调用 installEventFilter 方法安装过滤器的类才是事件的原始接收者。就拿上文咱们举的 QLabel 组件的例,假设顶层窗口的类名是 DuckWindow,那么,DuckWindow 重写 eventFilter 方法,它就是事件的拦截者;而 QLabel 组件就是事件的原始接收者,所以,调用 installEventFilter 方法的是它。即 QLabel::installEventFilter( DuckWindow )。

不知道老周这样说大伙伴们能否理解。就是负责过滤事件的对象重写 eventFilter 方法;被别人过滤的对象才调用 installEventFilter 方法。

我们用示例说事。下面咱们要做的练习是这样的:

我定义了一个类叫 MyWindow,继承 QWidget 类,作为顶层窗口。然后在窗口里,我用一个 QHBoxLayout 布局,让窗口内的子级组件水平排列。但每个子组件的颜色不同。常规做法是写个自定义组件类,从构造函数或通过成员函数传一个 QColor 对象过去,然后重写 paintEvent 方法绘图。这种做法肯定没问题的。但是!我要是不想写自定义类呢,那就得考虑事件过滤器了,把 paintEvent 事件过滤,直接用某颜色给子组件画个背景就行了。

头文件声明 MyWindow 类。

#ifndef MYWIN#define MYWIN#include #include #include #include #include #include class MyWindow : public QWidget{    Q_OBJECTpublic:    MyWindow(QWidget* parent=nullptr);    bool eventFilter(QObject *obj, QEvent *event) override;private:    // 私有成员,画痘痘用的    void paintSomething(QPainter *p, const QColor &color, const QRect &paintRect);    // 布局    QHBoxLayout *layout;    // 三个子级组件    QWidget *w1, *w2, *w3;}; #endif

这里提一下这个 eventFilter 方法,这厮声明为 public 和 protected 都是可行的。老周这里就声明为 public,与基类的声明一致。

paintSomething 是私有方法,自定义用来画东西的。有伙伴们会问:QPainter 的 paintDevice 不是可以获取到绘图设置(这里指窗口或组件)的大小的矩形区域吗,为啥要从参数传个 QRect?因为这个 rect 来自 QPaintEvent 对象的事件参数,它指的可不一定窗口/组件的整个矩形区域。如果是局部重绘,这个矩形可能就是其中一小部分区域。所以,咱们用事件传递过来的矩形区域绘图。

窗口布局用的是 QHBoxLayout,非常简单的布局方式,子级组件在窗口上水平排列。

下面代码实现构造函数,初始化各个对象。

MyWindow::MyWindow(QWidget *parent)    : QWidget(parent){    // 初始化    layout = new QHBoxLayout;    this->setLayout(layout);    w1 = new QWidget(this);    w2 = new QWidget(this);    w3 = new QWidget(this);    layout->addWidget(w1);    layout->addWidget(w2);    layout->addWidget(w3);    // 安装事件过滤器    w1->installEventFilter(this);    w2->installEventFilter(this);    w3->installEventFilter(this);}

只有在被拦截的对象上调用 installEventFilter 方法绑定过滤器后,事件过滤器才会生效。此处,由于 MyWindow 类重写了 eventFilter 方法,所以过滤器就是 this。

下面是 eventFilter 方法的实现代码,只过滤 paint 事件即可,其他传给基类自己去玩。

bool MyWindow::eventFilter(QObject *obj, QEvent *event){    // 如果是paint事件    // 这里“与”判断事件接收者是不是在那三个子组件中    // 防止有其他意外对象出现    // 不过这里不会发生,因为只有install了过滤器的对象才会被拦截事件    if(event->type() == QEvent::Paint        && (obj==w1 || obj==w2 || obj==w3))    {        QPaintEvent* pe = static_cast(event);        QWidget* uiobj = static_cast(obj);        QPainter painter;        // 注意这里,绘图设备不是this了,而是接收绘图事件的对象        // 由于它要求的类型是QPaintDevcie*,所以要进行类型转换        // 转换后的uiobj变量的类型是QWidget*,传参没问题        painter.begin(uiobj);        if(w1 == uiobj)        {            // 红色            paintSomething(&painter, QColor("red"), pe->rect());        }        if(w2 == uiobj)        {            // 橙色            paintSomething(&painter, QColor("orange"), pe->rect());        }        if(w3 == uiobj)        {            // 紫色            paintSomething(&painter, QColor("purple"), pe->rect());        }        painter.end();        return true;    }    return QWidget::eventFilter(obj, event);}

拦截并处理了 paint 事件后,记得返回 true,这样事件就不会传给目标对象了(咱们帮它处理了,不必再重复处理,毕竟 QWidget 类默认的 paint 事件是啥也不做)。

下面代码是 paintSomething 方法。只是画了颗巨型青春痘……哦不,是一个椭圆。

void MyWindow::paintSomething(QPainter *p, const QColor &color, const QRect &paintRect){    // 设置画刷    p->setBrush(QBrush(color));    // 无轮廓    p->setPen(Qt::NoPen);    // 画椭圆    p->drawEllipse(paintRect);}

setPen中设定 NoPen 是为了在绘制圆时去掉轮廓,默认会画上轮廓线的。

最后,该到 main 函数了。

int main(int argc, char **argv){    QApplication app(argc,argv);    MyWindow wind;    // 窗口标题    wind.setWindowTitle("干点杂活");    // 调整窗口大小    wind.resize(321, 266);    wind.show();    return QApplication::exec();}

运行一下,看,横躺着三颗痘痘,多好看。

再来一例,这次咱们拦截的是窗口的 close 事件,当窗口要关闭的时候,咱们输出一条调试信息。

#ifndef 奶牛#define 奶牛#include #include class MyFilter : public QObject{protected:    bool eventFilter(QObject *obj, QEvent *e) override;};#endif

这次我们不从任何可视化类型派生,而是直接派生自 QObject 类。这里只是重写 eventFilter 方法,没有用到信号和 cao,所以,可以不加 Q_OBJECT 宏。也就是说咱们这个过滤器是独立用的,不打算加入到 Qt 的对象树中。

下面是实现代码:

bool MyFilter::eventFilter(QObject *obj, QEvent *e){    if(e->type() == QEvent::Close)    {        // 此处要类型转换        QWidget* window = qobject_cast(obj);        // 看看这货是不是窗口(有可能是控件)        if(window->windowFlags() & Qt::Window)        {            // 获取这个窗口的标题            QString title = window->windowTitle();            // 输出调试信息            qDebug() << "正在关闭的窗口:" << title;        }    }    // 事件继续传递    return false;}

最好返回 false,把事件继续传递给窗口,毕竟窗口可能在关闭时要做一些重要的事,比如保存打开的文件。QWidget 的 WindowFlags 如果包含 Window 值,表明它是一个窗口。

下面直接写main函数。

int main(int argc, char **argv){    QApplication app(argc, argv);    MyFilter *filter = new MyFilter;    // 弄三个窗口试试    QWidget *win1 = new QWidget;    win1->setWindowTitle("狗头");    win1->installEventFilter(filter);    win1->show();    QWidget *win2 = new QWidget;    win2->setWindowTitle("鸡头");    win2->installEventFilter(filter);    win2->show();    QWidget *win3 = new QWidget;    win3->setWindowTitle("鼠头");    win3->installEventFilter(filter);    win3->show();    return QApplication::exec();    // 可选    delete filter;    filter = nullptr;}

filter 是指针类型,它没有添加到 Qt 对象树中,不会自动清理,在exec返回后用 delete 解决它。在清理时有个好习惯,就是 del 之后把指针变量重设为 null,这样下次再引用变量时不容易产生错误,只要 if(! filter) 就能测出它是空的。

反正程序都退出了,所以此处你也可以让它泄漏一下也无妨。程序挂了后进程空间会被系统收回。

当然,用Qt专供的“作用域”指针也不错,超出作用域自动XX掉。

int main(int argc, char **argv){    QApplication app(argc, argv);    QScopedPointer filter(new MyFilter);    // 弄三个窗口试试    QWidget *win1 = new QWidget;    win1->setWindowTitle("狗头");    win1->installEventFilter(filter.data());    win1->show();    QWidget *win2 = new QWidget;    win2->setWindowTitle("鸡头");    win2->installEventFilter(filter.data());    win2->show();    QWidget *win3 = new QWidget;    win3->setWindowTitle("鼠头");    win3->installEventFilter(filter.data());    win3->show();    return QApplication::exec();}

QScopedPointer 通过构造函数引用要封装的对象,要访问被封装的指针对象,可以使用 data 成员。

运行之后,会出现三个窗口。逐个关闭,会输出以下调试信息:

---------------------------------------------------------------------------------------

最后老周扯点别的。

咱们知道,Qt官方推出 Python for Qt,名曰 PySide。五月份的时候,老周遇到一个问题:PySide6 无法加载 QML 文件,报的错误是加载 dll 失败,找不到指定的模块。

网上的方法都是不行的,首先,Qt 在版本号相同(均为 6.5.1)的情况下,C++是可以正常加载 QML 文件的。不管是生成资源文件还是直接访问文件均可。但 Python 是报错的。这至少说明我的机器上不缺某些 .dll,不然C++代码应该也报错。

接着,老周想是不是Qt官方编译的有问题,于是,我把自己编译的Qt动态库替换 PySide6 里面的动态链接库。报错依旧,那就排除编译的差异性。

那么,老周就想到,就是 Python 的问题了,3.7 到 3.10 几个版本测试也报错;用不同路径建的虚拟环境也报错;更换 Qt 版本(6.0 到 6.5)同样报错。

这时可以直接肯定就是 Python 的问题了。不是版本号的问题,是 Windows 商店安装的 Python 就会报错,非 Windows 商店安装的就正常。

不过,还得再加一句话:想把 Qt 用得 666 还是用 C++ 吧,用 Python 仅适合初学和娱乐。由于 Rust 可以调用 C/C++ 代码,所以你是可以尝试用 Rust 的。Rust 也不是什么鬼自动内存管理,要 GC 用 .NET 就完事了。Rust 的重点是内存安全。看似挺诱人,官方也把牛吹得入木四分。可用了之后(和用 Go 一样的感觉),是真的没 C++ 好用。C++ 能背负上这么多的历史包袱也不是靠吹的。当然 C++ 内存泄漏也没你想的那么恐怖。养成好习惯,作用域短,存放数据不多的对象就直接栈分配就行了;要在不同代码上下文传递对象,或分配的数据较大的,用指针。指针类型的变量,在不要的时候坚决干掉,然后记得设置变量为 nullptr。养成这些好习惯基本没多大问题。

一般代码你写惯了是不会忘记 delete 的,容易遗漏的是庞大复杂的代码之间会共享某些对象,在很多地方会引用到某对象。于是,码着码着就头晕了,就不记得销毁了。

会被多处引用的对象,可以写上注释提醒自己或别人要清理它,或者加个书签。写完代码后去看看书签列表,就会想起有哪些对象还没销毁。代码写复杂了会容易混,经常会访问已清理的对象。于是,不妨在访问指针变量前 if 语句一下,if (ptr),在 bool 表达式中,若指针类型的变量是空会得到 false,非空为 true。这样就可以避免许多低级错误。

哪怕是不常用指针的语言也不见得不出事。C# 里面你要是访问 null 的变量(VB 是 Nothing)也会报那个很经典的错误:“未将对象引用设置到对象的实例”,就是 NullReferenceException。在.NET 代码中你只要看到这货就得明白肯定有某个为 null 的对象被访问了。

C++ 里面,这样写就能实例化 MyClass 类,只是分配在栈上。

MyClass x;

但在 C# 中,初始值是 null,即未初始化的,初始化你还得 new。哦,顺便想起个事,C# 中数据的隐式基类是 Array,所以它是引用类型,初始值也是 null 的,就算你数据组里面的元素是值类型,但数组自身是引用类型。委托也是引用类型。有的刚入门的同学会以为委托是值类型。

C++函数按“引用”传值的话,一般会用到指针、引用参数,如 int *p、const int &a、const char *w(不能改)等,C# 中如果是引用类型,直接声明就行了,如 MyClass x,值类型可以用 ref 关键字,ref int v。

C# 中 int?、double? 等可以让其成为引用类型,你可以类比 C 中的 int* 等。

标签:

【VS Code 与 Qt6】运用事件过滤器批量操作子级组件-天天速递

如果某个派生自QObject的类重写eventFilter方法,那它就成了事件过滤器

06-11 21:33:47

高腰紧身牛仔裤,时髦又百搭,搭配黑色吊带,显得身姿曼妙

有的人喜欢简单随性的生活,有的人则梦想自己的生活永远是奢侈的、高级

06-11 20:42:59

全球新动态:这些年,祝勇的“纸上故宫”都在写些什么?|文化观察

这些年,祝勇的“纸上故宫”都在写些什么?|文化观察《在故宫寻找苏东

06-11 20:08:10

22岁女孩拿快递失联已第9天 她是家里顶梁柱!此前地毯式搜寻无果!-世界通讯

6月9日,河南安阳林州市石板岩镇22岁女孩郭满星,于6月1日走山路前往镇

06-11 19:46:44

《匹诺曹的谎言》公开demo上线steam!参与活动赢官方游戏周边 世界今日报

在浓厚的夏日气息中,非常感谢各位玩家在夏日游戏节上对我们的支持!如

06-11 19:06:17

【世界快播报】炎炎夏日,女子选择清凉舒适的吊带衫,尽显温柔气质和曼妙身姿

3 5这位女子穿的是一件黑色的吊带背心,这是一件丝绸材质的丝袜内裤,

06-11 18:51:45

郑裕美、李善均恐怖悬疑新电影《梦游》,坎城首映后获外媒大赞

第76届坎城国际影展影评人周受邀的恐怖电影《梦游(暂译)》,日前在电影

06-11 18:27:21

热门:广州市人大代表张忠德:打造中医药“医院—社区”老年康养服务新模式

南方网讯(记者 陈婕)6月8日,广州市人大代表、广州中医药大学副校长

06-11 18:32:00

哈尔滨私拆承重墙事件续:5人被采取刑事强制措施

记者6月11日从哈尔滨市松北区人民政府了解到,利民学苑小区“私拆承重

06-11 18:13:52

环球速看:4个工具,让 ChatGPT 如虎添翼!

ChatGPT很好用,其核心是prompt的运用,其回答质量很大程度取决于你的

06-11 17:54:19

天天热门:雪之花音译歌词(lastdance音译歌词)

来为大家解答以上的问题。雪之花音译歌词,lastdance音译歌词这个很多

06-11 17:23:31

新突破、国际首次 中国科学技术领域成果频出_天天快播

记者昨天(6月9日)从航天科技集团一院了解到,研制团队近日借助北斗卫

06-11 17:04:00

学制苗族银饰 传承非遗之美 全球独家

苗族银饰锻制技艺是苗族喜爱的民间传统工艺,主要用于制作头饰、面饰、

06-11 17:08:53

全球快讯:6月9日,杭州市区二手房成交124套

潮新闻客户端记者姚曹洁

06-11 16:53:21

每日视点!下半年新能源汽车市场战火重燃 国家入场开启下乡补贴

【智车派】在网络上流传着这样一句话“房子、车子、孩子是中产家庭的大

06-11 16:18:05

熬过4周,四大生肖真情难拒,事业顺风顺水,事业如虹|世界通讯

生肖兔的人具有高度的想象力,财运起大浪,万事顺遂,个性乐观,为人自

06-11 16:11:11

环球今日报丨去年新增145家市级企业技术中心

近日,2022年度市级企业技术中心认定结果发布。记者8日从市工信局了解

06-11 15:57:07

工程重大责任事故罪_重大劳动安全事故罪与重大责任事故罪 世界热闻

1、重大责任事故罪:事故责任人与受害人不存在劳动关系;工程重大安全

06-11 15:57:46

俄媒:俄国防部公布乌军装甲车辆被摧毁视频,引用二战时期经典语录

1941年,被誉为“苏联之声”的尤里·列维坦在广播中宣布了纳粹德国入

06-11 15:30:53

“连e行”网约公交车开通运营 3条直达线开通 天天聚看点

“太方便了,以前都是在路边招手上车或者电话预约,今后可以像打网约车

06-11 14:36:55

世界快看点丨12月去云南旅游必备物品清单表(12月去云南旅游必备物品)

1、好:注意保暖注意防晒带好防晒霜感冒药肠胃药等祝旅游愉快。本文就为

06-11 14:29:18

良加偏旁组词带拼音(良加偏旁组词)|今日要闻

导读1、良+氵=浪(浪花)良+人=食(食品)良+女=良家妇女良家妇女=娘良

06-11 14:17:55

0532哪个贷款催收_0532|环球观察

1、0532是山东省青岛市的区号。2、  山东青岛市南区邮编:266000区号

06-11 14:02:23

分时成交量怎么看(成交量怎么看)

1、成交量指标(VOL)是指一个时间单位内撮合成交的股数,用条形实体表

06-11 13:57:18

《欢迎来到王之国》公开正式预告,李俊昊&润娥根本就是演艺圈的资优生

JTBC全新浪满喜剧《欢迎来到王之国》(原译:KingtheLand)公开了2PM李

06-11 13:27:30

当前热门:义乌京东代运营服务商_提供优质的电商代运营服务

为什么要选择义乌京东代运营服务商?选择义乌京东代运营服务商有以下几

06-11 13:19:38

全球今日讯!打通“断头路” 跑出“加速度”

交通是城市的脉络,一条条宽阔的道路宛如一条条灵动的生命线,承载着一

06-11 12:53:42

世界微资讯!乔欣终于不扮乖乖女,一袭黄色高开叉礼服大秀曼妙身材,性感时髦

乔欣终于不再装乖乖女,穿上黄色高开叉连衣裙,尽显曼妙身材,性感又时

06-11 12:38:27

巴萨戏耍梅西遭曝光!加泰媒体倒戈,谈2大操作,耽误球王去国米_环球今日讯

梅西显然也是遭到了巴萨方面的戏耍,这也让加泰本地媒体都看不下去了。

06-11 12:17:31

拉萨海拔多少米高(拉萨海拔3680)

来为大家解答以上的问题。拉萨海拔多少米高,拉萨海拔3680这个很多人还

06-11 12:11:21

微头条丨乌海京东到家代运营公司_提供专业的代运营服务

乌海京东到家代运营公司是一家提供专业的代运营服务的公司,旨在帮助商

06-11 11:38:12

环球今热点:牵涉移民!刺童事件挑动法国神经,马克龙:极其卑鄙的袭击

【环球时报驻法国特约记者姚蒙】据法新社报道,法国总统马克龙9日探望

06-11 11:41:32

环球播报:2023年陕西省普高学业水平考试笔试科目成绩公布 等级划分标准有较大调整

  陕西省2023年普通高中学业水平合格性考试(以下简称“高中学考合格

06-11 11:12:12

蛹没移动能力,很容易被天敌吃掉,为何昆虫还进化出蛹这种形态呢

但是蛹期也为昆虫提供了很多生存优势,如更好地适应不同的生存环境、节

06-11 10:40:52

每日资讯:买二手房后发现房屋漏水怎么办(房屋漏水怎么办)

1、先在漏水最严重的位置进行原因排查,分析出具体是什么原因漏水。2、

06-11 10:04:55

美的集团2023年第一季度财务数据:数据光鲜亮丽,但隐忧犹存_世界视讯

尽管表面上看美的集团2023年第一季度实现了营业收入的增长、净利润的提

06-11 09:27:35

环球热议:水淹道床影响列车运行!合肥发布情况通报

6月10日8时20分许,沪蓉线长安集至南分路间突发不明水源水淹道床,影响

06-11 09:27:48

1.85英雄合击版哪两个组合厉害_1 80英雄合击版本

1、我觉得180农民传奇很不错,我是那种喜欢经典的人,玩这个最主要还是

06-11 09:06:39

苹果已信任无法验证需要互联网_苹果已信任无法验证-资讯推荐

1、以苹果手机为例,提示无法验证app需要互联网连接以验证是否信任开发

06-11 09:02:15

考后心理波动期来了?几个方法帮考生收心

长期的备考和紧张的高考之后,考生的各种心理需求在考试后一段时间会出

06-11 08:51:11

郑裕美、李善均恐怖悬疑新电影《梦游》,坎城首映后获外媒大赞|热点

第76届坎城国际影展影评人周受邀的恐怖电影《梦游(暂译)》,日前在电影

06-11 08:25:22

天天微头条丨小学一年级诗歌朗诵稿(一年级诗歌朗诵比赛稿)

1、我想飞我是新世纪的儿童,正赶上美好的时代。2、我插上理想的翅膀,

06-11 08:22:24

世界快讯:cpu蓝屏怎么解决

这款软件的亮点还是蛮多的,内存小运行稳定,且不需额外收费,最近很多

06-11 07:49:40

环球热头条丨古老沣河涌动新活力

核心阅读推进生态治理、建设文化小镇、发展青年文旅消费……为了让传统

06-11 07:17:52

博纳董事长于冬:剧集的崛起是对电影真正的冲击,不是拼特效的时代了

搜狐娱乐讯(哈麦 文)6月10日,第二十五届上海国际电影节开幕论坛举办

06-11 07:03:52

当前聚焦:坚守“可靠”坦克Hi4-T 当下新能源越野的更优解

坦克500Hi4-T是坦克品牌首款落地量产的新能源车型,拥有强大动力、强大

06-11 06:54:09

润际新材首发过会,公司产能扩张不能满足境内客户需求原因遭问询

乐居财经彦杰6月10日,据上交所2023年第49次审议会议结果公告,重庆润

06-11 06:40:11

每日消息!呵护心灵健康 阳光快乐成长

随着社会经济的快速发展,竞争日益激烈,青少年的心理健康问题越来越受

06-11 06:34:02

麻辣鸡块适合什么配菜? 快看点

麻辣鸡块用料主料鸡大腿2个辅料蒜头6瓣以上藕半段土豆1个洋葱半个香菜1

06-11 06:08:25

机动车国5 机动车国五标准是什么|全球即时看

1、国五标准是指国家第五阶段机动车污染物排放标准,即“国五标准”,

06-11 05:31:33

提高科学素养 “深海发现之旅”在国家海博馆启动 世界热点评
蓉火传递启动|“中国民航英雄机组”成员毕楠:当上火炬手,是荣誉也是责任
永远不要指望驯服的三个星座,一身反骨,生来叛逆,像狼一样自由 世界聚焦
时讯:乔欣终于不扮乖乖女,一袭黄色高开叉礼服大秀曼妙身材,性感时髦
中经评论:以“村BA”点燃乡村活力
八年级上册语文课件ppt七彩课堂(八年级上册语文课件ppt) 速看
汕尾重点推介文旅资源 世界新要闻
当前热文:夜幕下,一个群体带动城市消费新热潮
天天百事通!房间面积怎么算平方米公式(房间面积怎么算)
世界今亮点!引导行业健康发展 海南省混凝土协会正式成立
徐州城下城遗址博物馆“上新”|今日热闻
环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心 天天快消息
苍穹巨灵·内蒙古篇
世界速讯:Win10中PUBG蓝屏后如何快速修复
动态焦点:市交通运输委:以港促业兴城 港产城相互赋能
动漫IP“雅皮兔” 携朋友亮相文博会-资讯
南京江宁:“智慧防线”成功上线 助力汛期监管
天天热讯:吃喝玩乐购!快来一站式畅享非遗购 探访非遗味 共赴非遗游!
追光 | 明晨,看18年后的伊斯坦布尔续写欧冠决赛传奇
国家防总针对南方地区持续降雨启动防汛四级应急响应_全球报资讯
中超:武汉三镇平山东泰山
天天讯息:汽车水箱漏水怎么修补多少钱(汽车水箱漏水怎么修补?)
牵涉移民!刺童事件挑动法国神经,马克龙:极其卑鄙的袭击-天天快讯
国家防总启动防汛四级应急响应 派工作组赴广西福建指导救灾
环球观焦点:暗黑4永生威能介绍
“文根”何以“深种”?看文博会如何寻找岭南新坐标
【焦点热闻】广西合浦河水暴涨致浸坝 2400余村民被困
今日热讯:2023年5.25日凌晨3点左右,在一款游戏“口袋奇兵”推出的活动中
海昌海洋公园《航海王》产品上线
世界今日讯!《西行纪 燃魂》阿修罗战场战场宝典
图悦词云图怎么做(图悦) 全球百事通
焦点日报:企业qq和个人qq有什么区别(企业qq)
吴用绰号解释(吴用绰号) 热议
教育部:加强中小学地方课程和校本课程建设与管理 每日热门
《潜行者2》确认缺席Xbox发布会!也不参加6月所有展会_天天简讯
北京三院地址(北京武警三院)
无法连接到internet但网络正常(无法连接到internet)
空难40天后,机上4名儿童在丛林被发现幸存,最小的只有11个月大
和钱有缘的5个生肖,一时缺钱,半生富裕,越老越富,看看有你吗
广州番禺公安通报“男子在女厕门口偷拍”:已抓获,行拘十天|短讯
17171319326 171713
沈阳机床股票股吧
义乌京东代运营服务商_提供优质的电商代运营服务|天天短讯
每日热文:一周钢厂动态汇总(6月5日-6月9日)
水果没有籽怎么种(水果没有籽怎么种植)
头狼:黄金下周1970-73区域布局空
天天头条:厦门推出今年第二批商住用地 计划本月底拍卖出让
全球快播:大运会火炬手邹敬园:希望全世界大学生感受到成都的文化
世界热讯:天谕手游炎天大型团战技能哪个好 天谕手游炎天大型团战技能推荐
安逸四川日历海报丨在广元利州月坝村:踏湖望星空 全球快资讯
X 广告
资讯
X 广告

Copyright ©  2015-2022 现在畜牧网版权所有  备案号:粤ICP备18023326号-5   联系邮箱:855 729 8@qq.com