위젯과 연결 슬롯에서 상속에 관한 몇 가지 문제점이 있습니다. QWidget
에서 상속받은 추상 위젯을 만들었습니다. 여기에 프로토 타입은 다음과 같습니다 자식 위젯 슬롯에 신호를 연결하십시오.
class WidgetParams : public QWidget
{
Q_OBJECT
public:
explicit WidgetParams(QWidget *parent = 0) : QWidget(parent){}
virtual bool paramChanged() = 0;
protected:
bool paramsChanged;
};
은 그럼 예를
WidgetParamsWindows
를 들어,
WidgetParams
에서 유래 된 클래스를 만들었 :
class WidgetParamsWindows : public WidgetParams
{
public:
explicit WidgetParamsWindows(QWidget *parent = 0);
virtual bool paramChanged(){return paramsChanged;}
private:
QFormLayout *layout;
QSpinBox *svertical;
QSpinBox *shorizontal;
signals:
public slots:
void changeSomeParam(int value);
};
WidgetParamsWindows
에서, 나는 약간 QSpinBox
, QPushButton
등이 PARAMS을 조정해야합니다.
WidetParamsWindows
에
QSpinBox
를 연결 : 올바른
WidgetParams
을 보여주기 위해, 그 후
connect(spinbox,SIGNAL(valueChanged(int)),this,SLOT(changeSomeParam(int));
가 나는 WidgetParamsWindows
을 작성 WidgetParams
목록에 넣을 때의 사용자를 클릭합니다.
하지만 난 QSpinBox
, 아무것도 변화 값을 변경하려고 나는 콘솔에 다음과 같은 메시지가있을 때, 대신
QObject::connect: No such slot WidgetParams::changeSomeParam(int)
부모 위젯 슬롯을 왜 모르겠어요 WidgetParamsWindows
, 아이디어가 있으십니까?
WidgetParamsWindow
에Q_OBJECT
를 추가하려고, 슬롯 매크로가 해결되지 않는,WidgetParamsWindow
에는Q_OBJECT
매크로가 없다? 'WidgetParamsWindows'에도'Q_OBJECT' 매크로를 추가 했습니까? 'changeSomeParam (int) '슬롯은 어디에서 선언 되었습니까? –