QtMenubar Call Slot
QtMenubar Call Slot
这是在一个Menu类中。问题在于addAction。这可以工作,但是没有连接到slot:
QMenu* menu2 = new QMenu("Test");
menu2->addAction("Test");
当我这样做时:
QMenu* menu2 = new QMenu("Test");
menu2->addAction("Test", Menu, test);
我得到编译错误:"error: expected primary-expression before ',' token"
我的意思是在Menu类中调用test()
函数。我做错了什么?
这个错误来自于传递Menu
作为参数。你说Menu
是一个类,而类本身并不是表达式。
如果您需要在Menu
的实例上调用test
,其中Menu
不是QObject
的派生(即;没有可用的插槽),那么您可以在小部件中创建一个包含QMenu
本身的插槽(可能是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();
}
当然,如果您在该类之外创建菜单,则需要将插槽设为公共,但这是另一个问题
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- "no matching function for call to 'Vector::Vector'"错误
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 模板规范获取'Ambiguous call to overloaded function'
- 从 TVector2 类派生复杂类:"No matching function for call to Complex::Complex()"
- Incomings Call with Android Sip stack in Embarcadero C++ bui
- 学习 c++,编译错误"no matching function for call"
- 结构错误:"no matching function for call to "
- 创建函数变体向量时"No matching function for call"错误
- C++线程"Call to non-static member function without an object argument"
- 编译时二叉搜索树错误的反向迭代器表示"no matching function call for operator=()"
- 如果子类中没有构造函数方法,则错误"no matching function for call to 'LGame::LGame(String&)'"
- Qt的slot(?)将冗余命名空间插入连接
- 提升多精度浮点数128:标准::exp错误:'no matching function for call'
- "error: no matching function for call to",我无法更改结构的定义
- 如何修复以下错误"no match for call to '(std::tr1::shared_ptr<_iobuf*>) (FILE*&)'"
- 替换派生对象向量中的对象"no matching function to call"
- ROS CPP 相当于 Python subprocess.call() 和 shell=True
- QtMenubar Call Slot