运行mainwindowm.cpp总是会出现这样的问题
**QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clicked() **
运行出来的窗口输入账号和密码,点击登录按钮,并没有显示出来,怎么样修改才能显示出来呢?
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
database myDatabase;
MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:
void try_login();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.cpp文件
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->myDatabase.getConnection();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow:: on_pushButton_clicked()
{
QString userInputtype;
if(ui->radioButton_2->isChecked())
{
userInputtype = "counter";
}
else
{
userInputtype = "manager";
}
QString userInputNumber = ui->InputNumber->text();
QString userInputPassWord = ui->InputPassWord->text();
qDebug()<<"用户输入的账号"+userInputNumber;
qDebug()<<"用户输入的密码"+userInputPassWord;
}
你是不是改过登录按钮的名称了原来叫pushButton,这个槽函数是改名前在ui自动生成的?
改名后要把槽函数的名字也对应着改掉才能完成按对象名称自动接
解释一下那行输出吧,用ui文件生成的代码会自动执行QMetaObject::connectSlotsByName方法,它的执行逻辑是寻找名称符合模板"on_对象名称_信号名称"的槽函数,有的话它就会尝试找到ui中对应名称的对象,然后尝试把这个槽函数跟对象的对应信号连接起来,所以它报的这行输出的意思,就是没有在ui里找到有名称为pushButton的对象有叫clicked的信号
去ui里看你按钮的名字是不是对的