菜单操作连接找不到插槽

时间:2014-02-23 17:42:30

标签: c++ qt qobject qtcore qt-signals

我正在创建一个QSystemTrayIcon托盘菜单。它的上下文菜单有几个我需要识别的行为。

public slots:
    void s_showNote();

void Traymenu::createMainContextMenu(){
  ...
  std::string noteTitle = m_noteList[i]->getTitle();

  QString menuEntryName = QString::fromStdString(noteTitle);
  QAction *openNote = m_mainContextMenu.addAction(menuEntryName);

  QObject::connect(openNote,SIGNAL(triggered() ),this,SLOT(s_showNote()) );
      QVariant noteID;
      noteID.setValue(m_noteList[i]->getID());
      openNote->setData(noteID);

错误是

QObject::connect: No such slot QSystemTrayIcon::s_showNote()

上面的所有代码都是我的类定义的一部分,它继承自QSystemTrayIcon。我怎么称呼SLOT?

1 个答案:

答案 0 :(得分:0)

您似乎至少有两个问题在进行:

  • 将Q_OBJECT用于QObject派生类。

  • 您需要相应地重新运行qmake。

关于第一点,请在将来使用C ++ 11和至少Qt 5.2,因为在这种情况下,您将获得静态编译器时间错误,这对于避免这些繁琐的问题非常方便。