position arguments & keyword arguments

#* positional arguments
#** keyword arguments
def testparameter(num, *tuples, **keywords):
	print("num:", num)
	print("tuples:")
	for arg in tuples:
		print(arg)
	
	keys = sorted(keywords.keys())
	for kw in keys:
		print(kw, ":", keywords[kw])

if __name__ == "__main__":
	#num: 3
	#tuples:
	#tuple1
	#tuple2
	#key1 : 1
	#key2 : 2
	testparameter(3, "tuple1", "tuple2", 10 , key1 = 1, key2 = 2)


<完>

可以尝试使用以下两种方法解决此问题: 1. 将 QVector&lt;Position&gt; 类型的参数转换为 QVariant 类型,然后再传递给信号和槽。这可以通过 QVariant::fromValue 函数实现。示例代码如下: ``` QVector&lt;Position&gt; positions; QVariant variant = QVariant::fromValue(positions); connect(sender, SIGNAL(signal(QVariant)), receiver, SLOT(slot(QVariant))); emit signal(variant); ``` 接收端的槽函数可以这样实现: ``` void Receiver::slot(QVariant variant) { QVector&lt;Position&gt; positions = variant.value&lt;QVector&lt;Position&gt;&gt;(); // 处理 positions } ``` 2. 自定义信号和槽,将 QVector&lt;Position&gt; 类型的参数作为自定义信号的参数。示例代码如下: ``` class Sender : public QObject { Q_OBJECT public: void sendPositions(const QVector&lt;Position&gt;&amp; positions) { emit positionsSent(positions); } signals: void positionsSent(const QVector&lt;Position&gt;&amp; positions); }; class Receiver : public QObject { Q_OBJECT public slots: void receivePositions(const QVector&lt;Position&gt;&amp; positions) { // 处理 positions } }; Sender sender; Receiver receiver; connect(&amp;sender, SIGNAL(positionsSent(QVector&lt;Position&gt;)), &amp;receiver, SLOT(receivePositions(QVector&lt;Position&gt;))); QVector&lt;Position&gt; positions; sender.sendPositions(positions); ``` 上述两种方法都可以解决 QObject::connect: Cannot queue arguments of type &#39;QVector&lt;Position&gt;&amp;&#39; 的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值