Как связать определенную функцию в слоте - PullRequest
1 голос
/ 21 июня 2019

Это мой класс Wavefrontrenderer.

Class WavefrontRenderer : public QMainWindow , private 
 Ui::WavefrontRendererClass
{
Q_OBJECT
//Q_PROPERTY( QColor m_color READ m_color NOTIFY colorChanged)

 public:

 WavefrontRenderer(TreeModel* model , QWidget *parent = Q_NULLPTR);
 void iterate(const QModelIndex & index, const QAbstractItemModel * model);
 void render();
 void RenderTreeElement(QModelIndex index); 

 private:
//Ui::WavefrontRendererClass ui;
TextureManager textureManager;
TextureManagerCubeMap textureManagerCubeMap;
QColor  m_color;
void FillComboBox();

 private slots:
  void PositionXYZ();

};

/////////////////////////////////////////////// //////////////////////////////////

 WavefrontRenderer::WavefrontRenderer(TreeModel* model , QWidget *parent) : 
 QMainWindow(parent)
 {
  setupUi(this);
  treeView->setModel(model);
  treeView->setDragEnabled(true);
  treeView->setAcceptDrops(true);
  treeView->installEventFilter(this);
  connect(doubleSpinBoxPositionX, SIGNAL(valueChanged(double)), this , 
  SLOT(PositionXYZ()));

   }

/////////////////////////////////////////////// //////////////////////////////////

Я создаю элементы управления во время выполнения из другого класса, которому я передаю класс Wavefrontrenderer в качестве указателя.

void Container::CreateUI(QHBoxLayout* layout)
 {
    wavefrontrenderer // Pointer defined as a private member    
    QDoubleSpinBox *PositionXSpinBox = new QDoubleSpinBox;
    PositionXSpinBox->setRange(-10000, 10000);
    PositionXSpinBox->setSingleStep(.1);
    PositionXSpinBox->setValue(x);
    layout->addWidget(PositionXSpinBox);
    bool ok = QObject::connect(PositionXSpinBox, 
    SIGNAL(valueChanged(double)), wavefrontrenderer , SLOT(print()));
    qDebug() << "The  slot is connected =" << ok;

}

Я определил print как открытый элемент слота в классе Container.

Проблема в том, что connect пытается найти функцию print () в классе WavefrontRenderer, а не в классе Container.

Как сделать так, чтобы соединение вызывало функцию print () класса Container.

...