我有一个编译良好的连接语句,其连接类型为QueuedConnection。一旦我或它与UniqueConnection,它拒绝编译。我不得不将它重新转换为Qt::ConnectionType
才能运行。这是正常的/预期的行为吗?
我以为连接方法定义会毫无怨言地接受int(它等价于枚举)。
connect(
mySource, SIGNAL(mySig()),
this, SLOT(mySlot())),
static_cast<Qt::ConnectionType>
(Qt::QueuedConnection|Qt::UniqueConnection));
2条答案
按热度按时间jogvjijk1#
我尝试这个例子:
你在
connect
中写的是错误的,因为你应该遵循这样的风格:您不能同时使用两个连接
来自
Qt::UniqueConnection
的Qt::ConnectionType:这是一个可以使用按位OR与上述任何一种连接类型组合的标志。当Qt::UniqueConnection被设置时,如果连接已经存在(例如,如果连接已经存在),QObject::connect()将失败。如果相同的信号已经连接到用于相同对象对的相同槽)。这个标志是在Qt 4.6中引入的。
注意到它是在Qt 4.6中引入的,它说如果连接已经存在
QObject::connect()
将失败。当我尝试
我也得到一个错误,因为我使用
Qt 6
版本,它可能在Qt 4.6
中工作。在https://stackoverflow.com/a/20717599/9484913中,我尝试这样做:
它工作:
a1o7rhls2#
您必须明确选择其中一种连接类型,一个连接中不能有多个连接。
查看文档以了解其差异:Qt连接类型