我是 Qt 的新手。
我想在QWebView
中响应linkClicked
。
我试过这样连接:
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 Editing Signals Slots 执行此操作时:
我在头文件中声明了插槽:
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
执行此事件处理的正确方法是什么?
最佳答案
您声明它现在可以工作了,因为您将 QObject::connect
更改为 connect
。现在我不是 100% 同意这一点,但我相信这样做的原因是通过调用 connect
,您正在调用与属于您的应用程序一部分的对象关联的方法。即它就像做 this->connect(...)
。这样,它与现有对象相关联 - 而不是调用静态方法 QObject::connect
,后者对您的应用程序一无所知。
抱歉,如果不清楚,希望我明白了!
关于c++ - Qt:在 QWebView::linkClicked(QUrl) 上响应时出现问题 - 插槽信号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847157/