Пересмотрел много различных примеров, но так и не понял, как передать параметры в слот родительского объекта.
Класс объекта, передающего параметры:
class MakeTable : public QDialog
{
public:
MakeTable(QWidget* parent = nullptr);
private:
QGridLayout* lay;
qint16 width;
qint16 height;
QLabel* w;
QLabel* h;
QSpinBox* setWidth;
QSpinBox* setHeight;
QPushButton* ok;
QPushButton* cancel;
public slots:
void reject();
};
Конструктор этого класса:
MakeTable::MakeTable(QWidget* parent)
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
{
w = new QLabel("Введите количество столбцов таблицы");
h = new QLabel("Введите количество строк таблицы");
setWidth = new QSpinBox;
setHeight = new QSpinBox;
setWidth->setMaximumWidth(50);
setWidth->setMaximum(1024);
setWidth->setMinimum(1);
setWidth->setValue(32);
setHeight->setMaximumWidth(50);
setHeight->setMaximum(1024);
setWidth->setMinimum(1);
setHeight->setValue(32);
w->setBuddy(setWidth);
h->setBuddy(setHeight);
ok = new QPushButton("ОК");
cancel = new QPushButton("Отмена");
width = qint16(setWidth->value());
height = qint16(setHeight->value());
connect(ok, SIGNAL(clicked()), parent, SLOT(makeTable(width, height))); //Здесь непонятный момент.
connect(cancel, SIGNAL(clicked()), this, SLOT(reject()));
lay = new QGridLayout;
lay->addWidget(w,0,0);
lay->addWidget(h,1,0);
lay->addWidget(setWidth,0,1);
lay->addWidget(setHeight,1,1);
lay->addWidget(ok, 2,0);
lay->addWidget(cancel, 2,1);
setLayout(lay);
this->setFixedSize(320,100);
this->show();
this->exec();
}
Слот родительского виджета, получающий параметры:
void Widget::makeTable(qint16 width, qint16 height);
Родительский виджет - parent в конструкторе MakeTable.
Параметрами являются значения из QSpinBox'ов MakeTable.
При выполнении программы в консоль "Вывод приложения" QtCreator выдаётся следующая ошибка:
QObject::connect: No such slot Widget::makeTable(width, height)
QObject::connect: (receiver name: 'Widget')