создаю калькулятор и надо запретить нажатие QPushButton кнопки дважды по очереди например ++ // или например запретить кнопку = нажимать дважды
Можно перехватывать нажатие QPushButton и сравнивать с последней нажатой кнопкой
#include <QMainWindow>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLineEdit>
enum LastButton {
BUTTON_DEFAULT,
BUTTON_A,
BUTTON_B,
BUTTON_C,
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0)
: QMainWindow(parent),
_lastButton(BUTTON_DEFAULT)
{
_lineEditOut = new QLineEdit;
_buttonA = new QPushButton("A");
_buttonB = new QPushButton("B");
_buttonC = new QPushButton("C");
connect(_buttonA, &QPushButton::clicked, this, &MainWindow::onButtonA);
connect(_buttonB, &QPushButton::clicked, this, &MainWindow::onButtonB);
connect(_buttonC, &QPushButton::clicked, this, &MainWindow::onButtonC);
connect(this, &MainWindow::buttonPressed, this, &MainWindow::onButtonPressed);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(_lineEditOut);
mainLayout->addWidget(_buttonA);
mainLayout->addWidget(_buttonB);
mainLayout->addWidget(_buttonC);
QWidget *widget = new QWidget;
widget->setLayout(mainLayout);
this->setCentralWidget(widget);
}
signals:
void buttonPressed(QString);
private slots:
void onButtonA()
{
if(_lastButton == LastButton::BUTTON_A) {
// если уже нажимали такую кнопку, то ничего не делаем
return;
}
emit buttonPressed("A");
_lastButton = LastButton::BUTTON_A;
}
void onButtonB()
{
if(_lastButton == LastButton::BUTTON_B) {
// если уже нажимали такую кнопку, то ничего не делаем
return;
}
emit buttonPressed("B");
_lastButton = LastButton::BUTTON_B;
}
void onButtonC()
{
if(_lastButton == LastButton::BUTTON_C) {
// если уже нажимали такую кнопку, то ничего не делаем
return;
}
emit buttonPressed("C");
_lastButton = LastButton::BUTTON_C;
}
void onButtonPressed(QString text) {
_lineEditOut->setText(_lineEditOut->text() + text);
}
private:
QPushButton* _buttonA;
QPushButton* _buttonB;
QPushButton* _buttonC;
QLineEdit* _lineEditOut;
LastButton _lastButton;
};
Сборка персонального компьютера от Artline: умный выбор для современных пользователей