Сначала вам понадобится объект Some_Class
с соответствующей областью действия. В настоящее время в вашем конструкторе есть только test
, который является параметром-значением и, таким образом, уничтожается, когда конструктор возвращается. Один из вариантов - передать тест в качестве указателя, если объект, в который вы передаете, имеет правильное время жизни.
Window::Window(Some_Class *test)
Если это не подходит в вашем случае, вам нужно будет сохранить копию внутри вашего Window
объекта. В остальной части этого ответа я, однако, предположу, что вы передаете указатель.
С обычным объектом C ++ (не QObject) вы не можете использовать макрос SIGNAL / SLOT, потому что они требуют использования маркеров слота / сигнала в определении класса.
Я вижу, вы пытались использовать синтаксис указателя на современный метод, но допустили одну ошибку. Третий параметр должен быть адресом объекта типа Some_Class
.
QObject::connect(m_button, &QPushButton::clicked, test, &Some_Class::method);
Однако это еще не все, для того, чтобы это работало, сигнатура clicked должна соответствовать методу Some_Class ::, которого нет. clicked
имеет параметр bool checked
.
Конструкция с макросами SIGNAL / SLOT позволяет слоту иметь меньше параметров, но эта версия соединения является более строгой и требует строгого соответствия.
Вы можете добавить параметр в method
или использовать лямбду, если у вас есть C ++ 11.
QObject::connect(m_button, &QPushButton::clicked, [test] (bool) {
test->method();
});