好吧,错误来自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();
}
当然,如果您在该类之外创建菜单,则需要将插槽公开,但这是另一个问题