Qt按钮不会单击

时间:2012-09-05 00:06:00

标签: c++ qt user-interface

您好我正在使用Qt tutorials我已经复制了本教程的沟通部分的代码。代码编译并显示,但我的按钮都没有可点击。

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 个答案:

答案 0 :(得分:5)

你的问题在于这一行:

ui->setupUi(this);

它会为您的主窗口创建一个不可见的中央窗口小部件,它会阻止发往您按钮的所有事件,这就是他们点击它们时不会压缩的原因。将此行移至MainWindow的构造函数的开头,问题就会消失。