我正在创建一个 Qt Designer 力计算程序,原理是在 QDoubleSpinBox 上给出输入值并通过一种方法进行计算,当我尝试连接一个按钮以激活计算时,我得到一个“没有这样的插槽错误"
我确保在 .h 文件中声明了公共(public)槽,但它仍然没有提供任何东西,“Lunghezza”函数是进行计算的函数
头文件:Window.h
class Window;
}
class Window : public QMainWindow
{
Q_OBJECT
public:
explicit Window(QWidget *parent = nullptr);
~Window();
public slots:
void Lunghezze(double Longeur1 , double Longeur2 , double Largeur , double Hauteur,double *T1 ,double *T2 , double *T3 ,double *T4);
private:
Ui::Window *ui;
};
我的cpp文件Window.cpp
QMainWindow(parent),
ui(new Ui::Window)
{
ui->setupUi(this);
double L1=ui->L1ValF->value();
double L2=ui->L2ValF->value(); // Getting the value from QDoubleSpinBox
double l=ui->lValF->value();
double H=ui->HValF->value();
double F=ui->FValF->value();
connect(ui->Calculate, SIGNAL(clicked()),SLOT(Lunghezze(L1,L2,l,H,F,0,0,0,0)));
}
Window::~Window()
{
delete ui;
}
void Window::Lunghezze(double Longeur1 , double Longeur2 , double Largeur , double Hauteur,double *T1 ,double *T2 , double *T3 ,double *T4){
float C1=hypot(Longeur1,Largeur/2);
float C2=hypot(Longeur1,Largeur/2);
float C3=hypot(Longeur2,Largeur/2);
float C4=hypot(Longeur2,Largeur/2);
// CALCOLO LUNGHEZZA FILI
*T1=hypot(C1,Hauteur);
*T2=hypot(C2,Hauteur);
*T3=hypot(C3,Hauteur);
*T4=hypot(C4,Hauteur);
}
我也删除了 moc 和 .o 文件,但仍然收到此消息!
QObject::connect: No such slot Window::Lunghezze(L1,L2,l,H,F,0,0,0,0) in ../calculo16/window.cpp:23 QObject::connect: (sender name:
'Calculate') QObject::connect: (receiver name: 'Window')
最佳答案
使用 lambda 和现代形式的 QObject 槽连接:
connect(ui->Calculate, &QPushButton::clicked, this, [=]() {
Lunghezze(L1,L2,l,H,F,0,0,0,0);
});
请注意,这将在构建时捕获 L1、L2... 的值。如果您想在单击按钮时获取它们,请将 ...->value
调用移到 lambda 中。
或者,向 Window
添加一个新插槽(无参数):
void Window::on_Calculate_clicked() {
double L1=ui->L1ValF->value();
double L2=ui->L2ValF->value();
double l=ui->lValF->value();
double H=ui->HValF->value();
double F=ui->FValF->value();
Lunghezze(L1,L2,l,H,F,0,0,0,0);
}
此名称应启用 signal-slot auto-connection ,但您始终可以手动连接它。
关于c++ - 连接 -> 窗口上没有这样的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673665/