连接 -> 窗口上没有这样的插槽

Connect -> No such slot on Window

本文关键字:插槽 gt 窗口 连接      更新时间:2023-10-16

我正在创建一个Qt Designer力计算程序,原理是在QDoubleSpinBox上给出输入值并通过一种方法进行计算,当我尝试连接按钮以激活计算时,我得到"没有这样的插槽错误">

我确保在 .h 文件中声明公共插槽,它仍然没有给出任何东西,函数"Lunghezza"是进行计算的函数

头文件 : 窗口.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 文件窗口.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::连接:没有这样的插槽 窗口::Lunghezze(L1,L2,l,H,F,0,0,0,0) 在。。/calculo16/window.cpp:23 QObject::connect: (发件人名称:"计算") QObject::连接: (接收方名称:">
窗口")

使用 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);
}

此名称应启用信号插槽自动连接,但您始终可以手动连接它。