2

我已经为 VS 插件安装了 Qt 和 Qt。一切正常,UI 应用程序可以编译和运行,但连接信号和插槽却不行。我Q_OBJECT在我的班级和连接我在构造函数中使用这个代码:

connect(ui.mainTableView, SIGNAL(activated(const QModelIndex &)),
        this, SLOT(showDetail(const QModelIndex &)));

编辑:

显示详细方法:

void MyClass::showDetail(const QModelIndex &index)
{
    this->setWindowTitle("it works");
}

窗口标题未更改且未到达断点。

在 Generated Files 目录中生成了 moc 文件,但是该类的 moc 文件是空的(其他没有),我认为是因为该类没有信号,而只有一个插槽。

即使 Designer 生成的连接也不起作用,并且调用 connect 方法返回true

4

4 回答 4

3

SIGNAL从和SLOT宏中删除变量名:

connect(ui.mainTableView, SIGNAL(activated(const QModelIndex &)),
    this, SLOT(showDetail(const QModelIndex &)));

有关更多详细信息,请QObject::connect仔细阅读文档。

于 2010-02-26T12:14:46.697 回答
2

你有moc正确的工作吗?这可以解释为什么connect没有做它的事情,但其他一切都是......

于 2010-02-26T12:05:28.387 回答
1

在 Visual Studio 2012 中,当尝试使用

connect(plot->xAxis, SIGNAL(rangeChanged(QCPRange)), plot->xAxis2, SLOT(setRange(QCPRange)));

我得到plot和的错误SIGNAL

这是因为 Visual Studio 发现了不正确的连接。它connectwinsock.h.

为了修复错误,我使用了QObject如下命名空间:

QObject::connect(plot->xAxis, SIGNAL(rangeChanged(QCPRange)), plot->xAxis2, SLOT(setRange(QCPRange)));

作为参考,这里是有关错误的信息。

对于第一个plot参数,错误是:

ERROR: argument of type "QCPAxis*" is incompatible with parameter of type "Socket".

首先SIGNAL,错误是:

ERROR: argument of type "cosnt Char*" is incompatible with parameter of type "const sockaddr*".

对于第二个plot参数,错误是:

ERROR: argument of type "QCPAxis*" is incompatible with parameter of type "int".

第二个SIGNAL错误是:

ERROR: too many arguments in function call.
于 2015-11-04T21:04:28.050 回答
0

结果:

哦,不,原来是一个愚蠢的问题,谢谢大家,所有的答案都促使我找到解决方案,但最后一步是发现在我的平台上,项目只能通过双击激活,而不是单点激活。对不起

于 2010-02-27T17:33:58.230 回答