gpt4 book ai didi

c++ - 你能改变 Qt 连接的队列大小吗?

转载 作者:太空狗 更新时间:2023-10-29 23:04:52 26 4
gpt4 key购买 nike

<分区>

在 Qt 中,您可以连接两个对象,方法是在一个对象中设置一个信号,在另一个对象中设置一个槽,然后使用“connect()”连接它们。

现在通过在一个对象中发出信号,它被发送到第二个对象。我有一个接受用户输入的系统,如果用户输入太多,我希望我的“队列”填满并且不再接受任何输入。

我可以在接收对象上实现一个回复机制,但我想知道我们是否可以将队列大小设置为(例如)1。因此只会处理一条消息,并且任何新的发射都会被简单地丢弃,直到“管道”有空间。

这在 Qt 中可能吗?

在我的例子中,这两个对象在不同的​​线程中并且有一个排队的连接(如果这有什么不同的话)......

MainWindow::MainWindow()
{
// Make object 1, stick it in another thread
MyObjType1 *obj1 = new MyObjType1();
anotherThread = new QThread; // anotherThread is type QThread *
obj1->moveToThread(anotherThread);
anotherThread->start();

// Make object 2, connect a signal to obj1
MyObjType2 *obj2 = new MyObjType2();
connect(obj2, SIGNAL(obj2Signal(int), obj1, SLOT(obj1Slot(int), Qt::QueuedConnection);

// Hammer obj1 with signals to its queue
for (int i = 0; i < 100000; i++)
{
emit obj2->obj2Signal(i);
}
}

所以想法是 obj1 获得大量信号,它处理第一个信号,并以某种方式丢弃其他信号直到它完成,然后接收下一个发出的信号。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com