0

私は例をCommunicateにしようとしています (これはqt4の Web チュートリアルのFirst プログラムにあります) が、別の方法で: ボタン 'plus' と 'minus' はコンストラクターでは構築されませんが、呼び出しによってQWidget クラスの属性を継承する子クラスのメンバー関数:

mywidget.h の myWidget クラス

#ifndef _MYWIDGET_H
#define _MYWIDGET_H
#include <QApplication>
#include <QDesktopWidget>
#include <QWidget>
#include <QIcon>
#include <QPushButton>
#include <QLabel>
class myWidget : public QWidget{

    public:
        myWidget(QWidget *parent = 0);

        void setPMButton(int,int,int,int,int,int);
    private:
        QLabel *label;
    private slots:
        void OnPlus();
        void OnMinus();   
};
#endif

Mywidget.cpp からのメソッドの実装

#include "mywidget.h"
myWidget::myWidget(QWidget *parent) : QWidget(parent){
    label = new QLabel("0", this);
    label->setGeometry(190, 80, 20, 30);
}
void myWidget::OnPlus(){
    int val = label->text().toInt();
    val++;
    label->setText(QString::number(val));
}
void myWidget::OnMinus(){
    int val = label->text().toInt();
    val--;
    label->setText(QString::number(val));
}
void myWidget::setPMButton(int x1, int y1, int x2, int y2, int w, int h){
    QPushButton *plus = new QPushButton("+", this);
    plus->setGeometry(x1, y1, w, h);

    QPushButton *minus = new QPushButton("-", this);
    minus->setGeometry(x2, y2, w, h);

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

メイン ファイル test.cpp には、次のように記述されています。

#include "mywidget.h"
int main(int argc, char *argv[]){

    QApplication app(argc, argv);

        myWidget window;

        window.setPMButton(50,120,50,200,75,30);        
        window.show();

    return app.exec();
}

しかし、アプリケーションを実行すると、ウィンドウは表示されますが、ボタンは機能しません。ターミナルでは、次のメッセージが表示されます。

Object::connect: No such slot QWidget::OnPlus()
Object::connect: No such slot QWidget::OnMinus()

これを機能させる方法はありますか?

4

1 に答える 1

1

Q_OBJECTマクロを追加するのを忘れていました。

#includes here
...

class myWidget : public QWidget{

Q_OBJECT   ///      <---- Here

public:
    myWidget(QWidget *parent = 0);

...
...
于 2013-05-20T02:13:49.103 に答える