我需要Q_EMIT示例

时间:2018-09-06 10:30:53

标签: c++ qt

现在我正在学习QT,但是我不了解Internet上的Q_EMIT,没有找到具体的语法或相关示例。请帮助我!

我发现了: 当您想将Qt Signals and Slots与第3方信号/插槽机制一起使用时,请使用此宏来替换generate关键字来发出信号。

通常在.pro文件中使用CONFIG变量指定no_keywords时使用该宏,但是即使未指定no_keywords时也可以使用该宏。

2 个答案:

答案 0 :(得分:1)

Qt系统基于“信号”和“插槽”的概念。 “信号”是发生的事情,通常是用户输入,而“插槽”只是代码。您可以将信号连接到插槽,以便在触发信号时调用该插槽。 在实现方面,信号和插槽都是C ++方法,其中信号代码将调出与其连接的所有插槽(和信号)。 您可以在the Qt documentation中阅读有关信号和插槽的更多信息。

知道Q_EMITemit宏是供人类阅读代码的指示器,也就是说,您正在调用信号(如我在上文所述,该信号隐式调出所有连接的插槽对此)。因此,此方法调用可能会对系统中的其他地方产生影响。宏本身扩展为空的C ++代码。 如果对象中某处有信号connected(),则可以将其称为Q_EMIT connected();emit connected();甚至是connected();

答案 1 :(得分:0)

# -*- coding: utf-8 -*- import scrapy class AliBaba(scrapy.Spider): name = "" allowed_domains = ["alibaba.com"] start_urls = ['https://www.alibaba.com/catalog/agricultural-growing-media_cid144?spm=a2700.9161164.1.2.57f04e02izIzZ1'] def parse(self, response): for products in response.css('div.item-main'): item = { 'product_name': products.xpath('//h2/a/@title').extract_first(), 'price': products.xpath('//div[@class="price"]/b/text()').extract_first().stripe(), 'min_order': products.xpath('//div[@class="min-order"]/b/text()').extract_first(), 'company_name':products.xpath('//div[@class="min-order"]/b/text()').extract_first(), #'url_of_product_image': (What's the query for url) } yield item # Code follow pagination link # What should I do to follow the pegination link? 只是Q_EMIT的同义词。

当您将Qt代码与也包含标识符emit的其他C ++代码组合在一起时,这很有用。