c++ - Qt:在 QWebView::linkClicked(QUrl) 上响应时出现问题 - 插槽信号问题

标签 c++ qt signals

我是 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/

相关文章:

c++ - 与自动一起使用时出现窄转换错误

c++ - 使用 init.d 将 C++ 程序作为服务运行

c++ - C++中基于范围的for循环

c++ - 将安慰专有的二进制消息获取到 sscanf 中

QT设计器: Connect QSlider and QDoubleSpinBox (both ways)

python - 完全透明的蒙版 -> 完全不透明的小部件

linux - 在没有父进程终止的情况下处理 SIGHUP 信号并将其传播到子进程

c++ - UI 未在 QT 设计器中更新

perl - 有没有办法在 Perl 中托管进程(即实际有效的线程替换)?

Qt 信号继承?