gpt4 book ai didi

qt - 连接 const QString& 或 const QString

转载 作者:行者123 更新时间:2023-12-01 23:30:29 42 4
gpt4 key购买 nike

如果 QString 是本地的,那么用 QString 发出信号的正确方法是什么。我的意思是我在 wigdetA 中有这样的功能

void wigdetA::something()
{

//
//e.g
//
QTreeWidgetItem *it = this->treeWidget->currentItem();
if (it == 0)
return;

QString s = it->text(1);

emit passToMainWindow(s);
}

我应该像这样创建连接(只需const QString):

 connect(wigdetA, SIGNAL(passToMainWindow(const QString)), this, SLOT(passToMainWindow(const QString)));

或者我可以使用 const 引用

connect(wigdetA, SIGNAL(passToMainWindow(const QString&)), this, SLOT(passToMainWindow(const QString&)));

两种方法都有效,但我认为第二个 const& 会使应用程序崩溃,因为 QString s 是本地的,并且当函数 Something() 退出时它将被销毁。

或者我错过了什么?

最佳答案

由于发射和接收对象都在主线程中,因此 Qt 使用直接连接(在发射时立即调用槽)。在这种情况下,您的本地字符串仍在堆栈中。

但是,按值传递它总是更好,尤其是在驻留在不同线程中的对象之间建立连接时。 QString 使用隐式共享(又名写时复制),因此按值传递它的成本并不高。

关于qt - 连接 const QString& 或 const QString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216600/

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