我对Qt比较陌生,我一直在试图弄清楚如何让不同的按钮在点击时返回一个特定的值。我已阅读通过信号和插槽的Qt文档,但我没有找到有用的东西。如何让多个Qt按钮返回不同的值
我知道我可以使用clicked函数并使用“goto slots”返回一个值,但是,从main中我想调用一个getChoice函数来打开一个新窗口并根据用户点击我会返回一个相应的int,我可以稍后使用。像这样的东西就是它从主体看起来的样子。
OptionMenuWindow option;
int choice = option.checkChoice();
所以这是我在OptionMenuWindow类代码,我已经试过路过一个int作为参考通过对槽,以便当choice0Clicked被激活,我知道哪个按钮被点击。
int OptionMenuWindow::checkChoice(){
this->show();
QEventLoop waitForResponse;
//THIS IS WHERE I TRY AND DO THAT
connect(ui->manageEmployee, SIGNAL (clicked()), &waitForResponse, SLOT(choice0Clicked()));
connect(ui->view, SIGNAL (clicked()), &waitForResponse, SLOT(choice1Clicked()));
connect(ui->generatePayroll, SIGNAL (clicked()), &waitForResponse, SLOT(choice2Clicked()));
waitForResponse.exec();
cout << "here" << endl
cout << choice << endl;
return choice;
}
void OptionMenuWindow::choice0Clicked()
{
choice = 0;
}
void OptionMenuWindow::choice1Clicked()
{
choice = 1;
}
void OptionMenuWindow::choice2Clicked()
{
choice = 2;
}
选择在头文件中定义。
这是我得到的错误:
的QObject ::连接:没有这样的插槽QEventLoop :: choice0Clicked(&选择)
的QObject ::连接:(发件人名称:“manageEmployee “)
的QObject ::连接:没有这样的槽QEventLoop :: choice1Clicked(&选择)
的QObject ::连接:(发送者名称: '观看')
的QObject ::连接:没有这样的插槽QEventLoop :: choice2Clicked(&选择)
的QObject ::连接:(发件人名称: 'generatePayroll')
我真的相信,有一个这样做更好,所以如果有的话,有人可以解释吗?
如果有什么需要我详细说明的,请在评论中告诉我。
谢谢
你搞砸了,[信号的签名必须与连接插槽的签名匹配](https://doc.qt.io/qt-5/signalsandslots.html#signals-and-slots)。尝试下面的任何一个[Qt的例子](https://doc.qt.io/qt-5/gettingstartedqt.html),并看看按钮被点击时的内容是如何完成的 – Mike