Как добавить нажатый сигнал и слот на пользовательскую кнопку в qt - PullRequest
1 голос
/ 11 июля 2020

У меня есть класс Box, который наследуется от QPushButton. Я хочу иметь событие onClick на кнопке, используя connect (SIGNAL и SLOT), и вызывать пользовательскую функцию onClick(), объявленную в box.h

box.h
#ifndef BOX_H
#define BOX_H

#include <QPushButton>

class Box : public QPushButton {
public:
    Box(const QString& text, QWidget* parent = nullptr);
    void onClick();
};

#endif // BOX_H

//box.cpp
#include "box.h"

Box::Box(const QString& text, QWidget* parent)
    : QPushButton(text, parent)
{
    connect(this, SIGNAL(clicked()), SLOT(this->onClick()));
}

void Box::onClick()
{
    this->setText("Something");
}

1 Ответ

2 голосов
/ 11 июля 2020

вашему ящику нужна метка для определения слотов

class Box : public QPushButton
{
    Q_OBJECT
    public:
        Box(const QString& text, QWidget* parent = nullptr);
    //may be public or private
    public slots:
    
        void onClick();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...