Qt按钮不会点击

QtPushButton wont click

本文关键字:按钮 Qt      更新时间:2023-10-16

你好,我正在学习Qt教程,我已经复制了本教程通信部分的代码。代码编译并显示,但我的按钮都不可点击。

主窗口.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

主窗口.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();
}

您的问题是这行:

ui->setupUi(this);

它为您的主窗口创建了一个不可见的中央小部件,它可以阻止所有指向按钮的事件,这就是为什么当您单击按钮时它们不会被按下的原因。将这一行移到MainWindow构造函数的开头,问题就会消失。