Qt:emit中的信号插槽位于插槽方法中
我正在读一本关于Qt的书,在一个信号槽函数的例子中,有一个位于槽函数内的emit方法。。。所以这变成了一个无限循环。。。我真的不明白如何阻止它:Qt:emit中的信号插槽位于插槽方法中,qt,signals-slots,Qt,Signals Slots,我正在读一本关于Qt的书,在一个信号槽函数的例子中,有一个位于槽函数内的emit方法。。。所以这变成了一个无限循环。。。我真的不明白如何阻止它: connect(webView, SIGNAL(urlChanged(const QUrl&)), this, SLOT(urlChange(const QUrl&)); 然后我们就有了这个功能: void BrowserWindow::urlChange(const QUrl &url) { emit ur
connect(webView, SIGNAL(urlChanged(const QUrl&)),
this, SLOT(urlChange(const QUrl&));
然后我们就有了这个功能:
void BrowserWindow::urlChange(const QUrl &url)
{
emit urlChanged(url);
progressLabel->setText(tr("Loading"));
}
谢谢什么是webView?(是同一种吗?)
connect正在将一个实例连接到此插槽-它可能没有连接自己的实例
如果是
connect(this, SIGNAL(urlChanged(const QUrl&)),
this, SLOT(urlChange(const QUrl&));
那将是一个无限循环什么是webView?(是同一种吗?)
connect正在将一个实例连接到此插槽-它可能没有连接自己的实例
如果是
connect(this, SIGNAL(urlChanged(const QUrl&)),
this, SLOT(urlChange(const QUrl&));
那将是一个无限循环oops,是的,你是对的,但是当插槽被调用时,仍然至少有一次调用了emit,我不知道为什么,文本说:“我们发出自己的urlChanged()信号以方便BrowserWindow用户”,但我不明白这到底意味着什么,因为只有“urlChanged”信号被设置为webview实例(webview类型为QWebView)…此发射将用于可能连接到BrowserWindow的任何插槽。某些东西可能会更改BrowserWindow url(例如,单击一个按钮),然后BrowserWindow将发出,因为它已更改,其发出可能会触发管道中的另一个插槽(即,激活另一个按钮)。如果没有BrowserWindow emit,我们无法将这些链接在一起,但是有了它,我们可以。谢谢Will,好的,问题是没有“连接”方法可以从“这个”(BrowserWindow)监听这个emit,但是好的,我理解这个原理,谢谢你的帮助!CheareSoops,是的,你是对的,但是当插槽被调用时,仍然至少有一次调用了emit,我不知道为什么,文本说:“我们发出我们自己的urlChanged()信号以方便BrowserWindow用户”,但我不明白这到底意味着什么,因为唯一的“urlChanged”信号被设置为webview实例(webView类型为QWebView)…此发射适用于可能连接到BrowserWindow的任何插槽。可能会有某些内容更改BrowserWindow url(例如,单击按钮),然后BrowserWindow将发射,因为它已更改,其发射可能会触发管道中的另一个插槽(即,激活其他按钮)。没有BrowserWindow emit,我们无法将这些链接在一起-但是有了它,我们可以。谢谢Will,好的,问题是没有“连接”方法可以从“这个”(BrowserWindow)中侦听此emit,但好的,我理解其原理,感谢您的帮助!干杯