Как что то делать вне слотов в qt?

Решил попробовать поработать в Qt. Изучил минимальную базу, и дальше решил идти пробовать(и учиться) на практике. Давно хотел портировать свою приложуху, которую написал на MIT app inventor, на пк, вот и решил этим заняться, вот только я начал что то делать, и столкнулся с проблемой: В начале проги, я хочу вызвать метом isconnectpossible, где проверю, есть ли вообще какой то блютуз модуль на компе, однако, я хочу его вызвать после загрузки интерфейса, вот как это сделать? Я сначало попробовал закинуть вызов метода в main.cpp, но он почему то не хочет работать, я уже сижу 3 часа над этим, help please. Сори, если этот вопрос тупой, но в инете внятного ответа я не нашёл. Не бульте пожалуйста) main.cpp:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTimer::singleShot(3000, &a, SLOT(isconnectpossible()));
    VoiceHome w;
    w.show();
    return a.exec();
}

voicehome.cpp:

#include "voicehome.h"
#include "ui_voicehome.h"

#include <QMessageBox>
#include <QBluetoothLocalDevice>

VoiceHome::VoiceHome(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::VoiceHome)
{
    ui->setupUi(this);
}

VoiceHome::~VoiceHome()
{
    delete ui;
}



void VoiceHome::isconnectpossible()
{
    QMessageBox::question(this, "Нет возможных устройств!", "VoiceHome не нашёл устройства bluetooth. Попробовать переподключиться?",
                                                                          QMessageBox::Yes | QMessageBox::No);
    /*try {
        QList <QBluetoothHostInfo> listofbluetoothdevices = QBluetoothLocalDevice::allDevices();
        if(listofbluetoothdevices.size() > 0){

        }
        else{
            QMessageBox::StandardButton reply = QMessageBox::question(this, "Нет возможных устройств!", "VoiceHome не нашёл устройства bluetooth. Попробовать переподключиться?",
                                                                      QMessageBox::Yes | QMessageBox::No);
            if(reply == QMessageBox::Yes){
                isconnectpossible();
                return;
            }
            else{
                exit(0);
            }
        }
    }
    catch (QBluetoothLocalDevice::Error error) {
        QMessageBox::about(this, "error", "error");
    } */
}

Ответы (1 шт):

Автор решения: arrowd

Это называется "загрузить функцию на выполнение в event loop". Можно сделать, например через QTimer::singleShot:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTimer::singleShot(0, &app, [] { isconnectpossible(); } );
    ...
    return app.exec();
}
→ Ссылка