Наследование стоит применять тогда, когда вам нужен доступ к состоянию и детальным событиям. Для обработки нажатия достаточно прицепить ваш обработчик на сигнал
QPushButton::clicked
:
auto btn = new QPushButton("click me!");
QObject::connect(btn, &QPushButton::clicked, []() {
// создание диалога и вызов его в модальном режиме (через QDialog::exec)
});
//-----------------------------------
void myFoo() { }
auto btn = new QPushButton("click me!");
QObject::connect(btn, &QPushButton::clicked, myFoo);
UPD: В вашем случае можно сделать примерно так:
auto btn = new QPushButton("click me!");
QObject::connect(btn, &QPushButton::clicked, []() {
::updateTable(table);
});