gpt4 book ai didi

c++ - QToolButton 信号和槽

转载 作者:行者123 更新时间:2023-11-28 04:53:48 26 4
gpt4 key购买 nike

我有一个 display.cpp 类,它有一个应该开始游戏的 QToolButton“开始”。我还有一个 singleton controller.cpp 类,它创建一个 display.cpp 对象并获取 QToolButton“开始”的指针。所以现在我尝试将“开始”按钮的 clicked(bool) SIGNAL 连接到我在 controller.h 中的自定义 SLOT,但由于某种原因它不起作用。

它编译并运行。

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

//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;
}

显示.cpp:

/*Button that is used to start the game*/
QToolButton *Display::getStartButton() const
{
return startButton;
}

在 main.cpp 中:

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 之后,它就不再起作用了!

最佳答案

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

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

关于c++ - QToolButton 信号和槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47608103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com