QtPushButton не нажмет

Здравствуйте, я работаю через Qt учебные пособия У меня есть копия кода для раздела общения этого урока. код компилируется и отображается, но ни одна из моих кнопок не активируется.

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
class QPushButton;
class QLabel;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void OnPlus();
void OnMinus();
private:
Ui::MainWindow *ui;
QLabel *label;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QtGui>MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QPushButton *plus = new QPushButton("+", this);
plus->setGeometry(50, 40, 75, 30);

QPushButton *minus = new QPushButton("-", this);
minus->setGeometry(50, 100, 75, 30);

label = new QLabel("0", this);
label->setGeometry(190, 80, 20, 30);

connect(plus, SIGNAL(clicked()), this, SLOT(OnPlus()));
connect(minus, SIGNAL(clicked()), this, SLOT(OnMinus()));

ui->setupUi(this);
}void MainWindow::OnPlus()
{
int val = label->text().toInt();
val++;
label->setText(QString::number(val));
}

void MainWindow::OnMinus()
{
int val = label->text().toInt();
val--;
label->setText(QString::number(val));
}MainWindow::~MainWindow()
{
delete ui;
}

main.cpp

#include <QtGui/QApplication>
#include "mainwindow.h"#include <QPushButton>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();

return app.exec();
}

1

Решение

Ваша проблема с этой строкой:

ui->setupUi(this);

Он создает невидимый центральный виджет для вашего главного окна, который блокирует все события, предназначенные для ваших кнопок, поэтому они не нажимаются при нажатии на них. Переместите эту строку в начало вашего конструктора для MainWindow и проблема уйдет.

5

Другие решения

Других решений пока нет …