我正在尝试获得一个QPushButton的操作方法,运行以下操作。
我的日记
//
// Created by simon on 28.04.22.
//
#ifndef RESTCLIENT_LOGIN_H
#define RESTCLIENT_LOGIN_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class Login; }
QT_END_NAMESPACE
class Login : public QWidget {
Q_OBJECT
QPushButton * loginButton;
QLineEdit * passwordInput;
QLineEdit * usernameInput;
QObject::connect(loginButton, &QPushButton::click, this, &buttonPressed);
public slots:
void buttonPressed();
public:
explicit Login(QWidget *parent = nullptr);
~Login() override;
private:
Ui::Login *ui;
};
#endif //RESTCLIENT_LOGIN_H相应的login.cpp:
#include "login.h"
#include "ui_Login.h"
Login::Login(QWidget *parent) :
QWidget(parent), ui(new Ui::Login) {
ui->setupUi(this);
}
Login::~Login() {
delete ui;
}
void Login::buttonPressed() {
//todo process login
}生成失败,Clion以红色标记包含connect方法的代码行。我意识到我试图将信号连接到我的功能是错误的,我希望有人能帮助我。
发布于 2022-04-28 14:24:23
问题是QPushButton::click()不是信号,而是执行单击的函数。
单击该按钮时发出的信号是:QPushButton::clicked()。
而如前所述,您应该从函数内部(例如在构造函数中)调用QObject::connect()函数。在类声明中调用它是没有意义的。
发布于 2022-04-28 14:24:29
连接调用看起来很好,除了click不是费雷亚诺第一次注意到他的回答那样的信号,而是使用来自QPushButton基类QAbstractButton的信号。有关所有可用信号,请参见QAbstractButton信号。
此外,connect需要在函数的内部,而不是在类声明中。需要初始化按钮才能使连接正常工作,因此Login类的构造函数似乎是它的逻辑位置,例如:
Login::Login(QWidget *parent) :
QWidget(parent), ui(new Ui::Login) {
ui->setupUi(this);
QObject::connect(loginButton, &QPushButton::clicked, this, &buttonPressed);
}从您显示的代码来看,loginButton似乎与ui中的其他GUI内容是分开的,因此您可能还需要首先创建该按钮,即在ui(...)之后添加, loginButton(new QPushButton),或者将loginButton移动到您的.ui文件中……
https://stackoverflow.com/questions/72045302
复制相似问题