首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QToolButton信号和时隙

QToolButton信号和时隙
EN

Stack Overflow用户
提问于 2017-12-02 12:53:09
回答 1查看 456关注 0票数 0

我有一个display.cpp类,它有一个应该开始游戏的QToolButton“开始”。我还有一个单例 controller.cpp类,它创建display.cpp的一个对象,并获取QToolButton "start“的指针。因此,现在我尝试将“开始”按钮的点击(Bool)信号连接到我在控制器中的自定义插槽。h,由于某些原因,它无法工作。

它确实编译和运行。

两个类都继承了QObject和Q_Object宏。

代码语言:javascript
复制
//controller.h
public slots:
    void initGame(bool);

//controller.cpp
void Controller::initConnectors(){

    /*create object of Display.cpp*/
    Display *sender = new Display();

    /*getStartButton from display.cpp and connect it*/
    connect(sender->getStartButton(),SIGNAL(clicked(bool)), getControllersInstance() ,SLOT(initGame(bool)));
}

void Controller::initGame(bool a)
{
  std::cout << "Received Signal?" <<std::endl;
}

display.cpp:

代码语言:javascript
复制
/*Button that is used to start the game*/
QToolButton *Display::getStartButton() const
{
return startButton;
}

在main.cpp中:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow m;
Controller::Create();
Controller * controller = Controller::getControllerInstance();
controller->initConnectors();
m.show();
return app.exec();
}

按下“开始”按钮后,什么都不会发生!我在display.cpp类中测试了“开始”按钮,它在那里工作得很好。但是当我把按钮传递给controller.cpp后,它就不再工作了!

EN

回答 1

Stack Overflow用户

发布于 2017-12-02 12:58:23

您可以将槽声明为int initGame(bool);,但稍后定义void initGame(bool)

我想这就是问题的根源。确保使用相同的类型。如果这不能解决问题,我们将需要看到完整的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47608103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档