1

こんにちは、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();
}
4

1 に答える 1

5

あなたの問題はこの行にあります:

ui->setupUi(this);

メイン ウィンドウ用の非表示の中央ウィジェットを作成し、ボタン宛てのすべてのイベントをブロックします。これが、ボタンをクリックしても押し下げられない理由です。この行をコンストラクターの先頭に移動するMainWindowと、問題は解決します。

于 2012-09-05T00:24:36.243 に答える