Смотрите, создайте в классе диалога сигналы
userChanged(int userID) и userChanged(QString userName)
В конструкторе класса присоедините их к сигналам списка
C++ (Qt)
connect(list, SIGNAL(currentRowChanged(int)), SIGNAL(userChanged(int)));
connect(list, SIGNAL(currentRowChanged(QString)), SIGNAL(userChanged(QString)));
Таким образом у нас диалог испускает сигналы о смене пользователя.
Теперь наша задача в главном окне перехватить эти сигналы. Для этого создаём слот setUser(...) в качестве аргументов может быть int или QString
C++ (Qt)
void ChooseTableDialog::setUser(const QString& userName){
// your code
}
А в конструкторе главного окна прикручиваем его к нашему сигналу
C++ (Qt)
connect(dialog, SIGNAL(userChanged(QString)), SLOT(setUser(QString)))
Теперь при клике на каком-либо пользователе главное окно оповещается об этом.
Только в вашем коде не видно, как вызывается сам диалог...
Еще хочу добавить, что статический метод tr() можно использовать без указания QObject::, если класс является наследником QObject.
C++ (Qt)
admitButton = new QPushButton(tr("Принять"),this);
cancelButton = new QPushButton(tr("Отмена"),this);
Также tr не станет работать с не константами