0

这是在 Menu 类中。问题是addAction。这有效,但与插槽没有连接:

QMenu* menu2 = new QMenu("Test");
menu2->addAction("Test");

当我这样做时:

QMenu* menu2 = new QMenu("Test");
menu2->addAction("Test", Menu, test);

我得到编译器错误:“错误:','令牌之前的预期主表达式”

我的意思是在 Menu 类中调用该test()函数。我究竟做错了什么?

4

1 回答 1

2

好吧,错误来自Menu作为参数传递。你说Menu的是一个类,而类本身不是表达。

如果您需要调用test的实例Menu,其中Menu不是派生的QObject(即没有可用的插槽),那么您只需在包含它QMenu本身的小部件中创建一个插槽(可能是 a QMainWindow),然后在其中实现调用!

编辑:添加一个例子。

class MainWindow : public QMainWindow {
  Q_OBJECT
 // Usual declarations...

private slots:
  void myCustomSlot();
};

现在,假设您在其构造函数中填充主窗口:

MainWindow::MainWindow(...) {
   // Some initialization code

   QMenu *menu2 = new QMenu("Test");
   menu2->addAction("Test", this, SLOT(myCustomSlot));
   // Some more initialization code
}

// ...

void MainWindow::myCustomSlot() {
   instanceOfMenu->test();
}

当然,如果您在该类之外创建菜单,则需要将插槽公开,但这是另一个问题

于 2011-12-30T02:09:36.467 回答