我正在构建一个需要Qdialog和几个按钮的应用程序。
我试图在我的实现中使用Command行为设计模式。到目前为止,我的项目有4个班级。 (请原谅粗糙的UML)
Command
+execute()
zoomInAndOut : Command
+execute()
MenuItem
-QPushButton
-command
+clicked()
Dialog
所以在对话框类中,我创建了一个menuItem(它有一个QPushButton和Command成员变量),我需要发生的是当单击menuItems按钮时,它调用menuItems“clicked”方法(反过来调用命令execute方法)。我知道必须使用“连接”功能,但经过多次尝试后,我无法正常工作。
在Dialog中,代码大致如下所示
zoomInAndOut zoomCommand;
menuItem *zoom = new menuItem(new QPushButton("Zoom", this), QRect(QPoint(300, 0), QSize(100, 50)), &zoomCommand);
connect(zoom->getButton(), SIGNAL(clicked()), SLOT(zoom->clicked()));
如前所述,connect方法完全错误,但你可以看到我试图实现的目标。我怎样才能做到这一点?
提前感谢您的帮助。
答案 0 :(得分:2)
更改代码
connect(zoom->getButton(), SIGNAL(clicked()), SLOT(zoom->clicked()));
到
connect(zoom->getButton(), SIGNAL(clicked()), zoom, SLOT(clicked()));
答案 1 :(得分:1)
确保您的menuItem类在开始Q_OBJECT
之后的行中包含{
宏。并确保clicked()
方法位于类主体的slots
部分。