Qt的:有问题应对上QWebView :: linkClicked(QUrl) - 插槽信号问题
题
我使用Qt很新。
我想回应在linkClicked
到QWebView
。
我试图连接是这样的:
QObject::connect(ui->webView, SIGNAL(linkClicked(QUrl)),
MainWindow,SLOT(linkClicked(QUrl)));
但是我正在错误:C:/Documents and Settings/irfan/My Documents/browser1/mainwindow.cpp:9: error: expected primary-expression before ',' token
当我做到这一点使用UI编辑信号插槽:
我有狭槽的头文件中声明:
void linkClicked(QUrl &url);
在源CPP文件:
void MainWindow::linkClicked(QUrl &url)
{
QMessageBox b;
b.setText(url->toString());
b.exec();
}
当我运行这一点,编译和运行,但有一个警告:
Object::connect: No such slot MainWindow::linkClicked(QUrl)
in ui_mainwindow.h:100
什么是做这个事件处理的正确方法?
解决方案 3
我改变QObject::connect
仅connect
和它的工作原理。
所以此代码的工作:
connect(ui->webView,SIGNAL(linkClicked(const QUrl)),this,SLOT(linkClicked(const QUrl)),Qt::DirectConnection);
但我不知道为什么?
其他提示
您说明它现在的作品,因为你改变了QObject::connect
到connect
。现在,我不是100%,但我相信这样做的原因是,通过调用connect
,你调用一个对象是应用程序的一部分相关的方法。即它就像做this->connect(...)
。这样一来,它与现有的对象关联 - 而不是调用静态方法QObject::connect
不知道你的应用程序的任何
很抱歉,如果这是不明确的,希望我碰到了问题的实质!
使用的QObject ::连接(),并连接()是在这方面相同。我相信
QObject::connect(ui->webView,SIGNAL(linkClicked(QUrl)),
MainWindow,SLOT(linkClicked(QUrl)));
从主窗口类中的函数调用。这就是为什么当你试图
connect(ui->webView,SIGNAL(linkClicked(const QUrl)),
this,SLOT(linkClicked(const QUrl)),Qt::DirectConnection);
它的工作原理。请注意,使它工作的区别 - 第三个参数。您使用的这个的第二片段,其中如在第一个片断中所使用的主窗口的。
此内容知道如何信号和槽机制工作以及如何正确地实现它