Я пытаюсь сделать пример Общайтесь (который можно найти в веб-учебнике First program in qt4), но по-другому: кнопки «плюс» и «минус» 'не строятся в конструкторе, но с помощью вызова функции-члена класса ребенка, который наследует класс QWidget атрибуты: классРеализовать слоты в производном классе - qt4/C++
MyWidget из mywidget.h
#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()
Есть ли способ сделать эту работу?
yep! ¬¬ ' Теперь это работает! Но почему это не дало ошибку компиляции? – Bessa
Я думаю, потому что нет незаконного кода. Он просто не будет работать так, как ожидалось, никаких соединений с сигналом/слотом, никакого дочернего 'QObject'-управления. – dschulz