【问题标题】:Using c++ operators as slots in Qt在 Qt 中使用 c++ 运算符作为插槽
【发布时间】:2013-01-04 11:31:38
【问题描述】:

我想知道是否可以(以及如何)使用 c++ 运算符,例如 ()、[] 作为 Qt 插槽。

编译器似乎在抱怨这个简单的代码

class MainWindowDecorator : public QObject
{  Q_OBJECT
private:
//some variables

public slots:
    int operator[](int i)
    {
    return i;
    }
}

错误如下:

Error: Not a signal or slot declaration

【问题讨论】:

  • 只是好奇,抱怨什么?在 QtCreator 我没有得到任何 :S
  • 是的,错误的文本是什么?
  • 我试过Q_SLOT int operator[](int);。虽然这并没有导致 moc 错误,但它似乎仍然错过了这个位置。

标签: c++ qt compiler-construction signals-slots


【解决方案1】:

您可以创建将调用专用operator 的插槽包装器。

问题在于 moc 解析器不允许该定义,可能是因为它需要一个标识符而不是关键字。

【讨论】:

  • 我想将该方法公开为槽,因为我有一个库 PythonQt,为了将方法公开给 Python 上下文,必须将它们声明为槽。
  • @linello 你试过 Q_INVOKABLE 吗?这也让元类型系统知道了一种方法。
  • 好的,编译器没问题,但我没有 PythonQt 方面的预期结果,我知道该对象不可索引...无论如何,谢谢您的建议!
猜你喜欢
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2018-01-11
相关资源
最近更新 更多