scusa l'ignoranza ma dove di preciso?
ho modificato così perchè ho visto che in verità exit() è una funzione void
codice:
// .h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void closeProgram();
};

#endif // MAINWINDOW_H
codice:
// .cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(closeProgram()));
}

MainWindow::closeProgram()
{
    exit(o);
}

MainWindow::~MainWindow()
{
    delete ui;
}
adesso mi da ben tre errori:
codice:
error: ISO C++ forbids declaration of ‘closeProgram’ with no type [-fpermissive]
error: prototype for ‘int MainWindow::closeProgram()’ does not match any in class ‘MainWindow’
error: candidate is: void MainWindow::closeProgram()
eppure nn mi sembra di sbagliare.
nell'intestazione il tipo di ritorno c'è.