J'ai essayé de résumer au maximum le problème...

Projet sous QtCreator, basé sur une QDialog.
A l'intérieur de cette QDialog, avec QtDesigner (intégré) je crée un widget de type QSpinBox que je promote en QSpinBoxColoured...

la déclaration de la classe QSpinBoxColoured est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef QSPINBOXCOLOURED_H
#define QSPINBOXCOLOURED_H
 
#include <QSpinBox>
 
class QSpinBoxColoured : public QSpinBox
{
    Q_OBJECT
public:
    QSpinBoxColoured(QWidget *&W): QSpinBox(W) {}
};
 
#endif // QSPINBOXCOLOURED_H
Lors de la compilation, j'ai droit à l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ui_dialog.h: In member function `void Ui_DialogClass::setupUi(QDialog*)':
ui_dialog.h:32: error: no matching function for call to `QSpinBoxColoured::QSpinBoxColoured(QDialog*&)'
qspinboxcoloured.h:7: note: candidates are: QSpinBoxColoured::QSpinBoxColoured(const QSpinBoxColoured&)
qspinboxcoloured.h:10: note: QSpinBoxColoured::QSpinBoxColoured(QWidget*&)
lors de la compilation de la ligne (autogénérée) de ui_dialog.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spinBox = new QSpinBoxColoured(DialogClass);
Pourtant, une QDialog dérive d'un QWidget, donc un casting implicite devrait être fait... Une idée?