Qt的:有问题应对上QWebView :: linkClicked(QUrl) - 插槽信号问题

StackOverflow https://stackoverflow.com/questions/847157

  •  21-08-2019
  •  | 
  •  

我使用Qt很新。

我想回应在linkClickedQWebView

我试图连接是这样的:

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::connectconnect和它的工作原理。

所以此代码的工作:

connect(ui->webView,SIGNAL(linkClicked(const QUrl)),this,SLOT(linkClicked(const QUrl)),Qt::DirectConnection);

但我不知道为什么?

其他提示

您说明它现在的作品,因为你改变了QObject::connectconnect。现在,我不是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);

它的工作原理。请注意,使它工作的区别 - 第三个参数。您使用的这个的第二片段,其中如在第一个片断中所使用的主窗口的。

此内容知道如何信号和槽机制工作以及如何正确地实现它

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top