现在我正在学习QT,但是我不了解Internet上的Q_EMIT,没有找到具体的语法或相关示例。请帮助我!
我发现了: 当您想将Qt Signals and Slots与第3方信号/插槽机制一起使用时,请使用此宏来替换generate关键字来发出信号。
通常在.pro文件中使用CONFIG变量指定no_keywords时使用该宏,但是即使未指定no_keywords时也可以使用该宏。
答案 0 :(得分:1)
Qt系统基于“信号”和“插槽”的概念。 “信号”是发生的事情,通常是用户输入,而“插槽”只是代码。您可以将信号连接到插槽,以便在触发信号时调用该插槽。 在实现方面,信号和插槽都是C ++方法,其中信号代码将调出与其连接的所有插槽(和信号)。 您可以在the Qt documentation中阅读有关信号和插槽的更多信息。
知道Q_EMIT
和emit
宏是供人类阅读代码的指示器,也就是说,您正在调用信号(如我在上文所述,该信号隐式调出所有连接的插槽对此)。因此,此方法调用可能会对系统中的其他地方产生影响。宏本身扩展为空的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 ++代码组合在一起时,这很有用。