Почему не работают слоты в загруженной форме через QUiLoader?

262
17 февраля 2018, 22:53

Не хотят работать слоты в загруженой форме через QUiLoader. Вот конструктор базового класса:

LoaderWidget::LoaderWidget(const QString &nwgt, QWidget * p):
    QWidget(p)
{
    std::shared_ptr<QUiLoader> pUIl (new QUiLoader);
    QFile ui("/home/userc/authAstra/widgets/" + nwgt + ".ui");
    if(ui.open(QIODevice::ReadOnly))
        m_widget = pUIl.get()->load(&ui);
    if(ui.isOpen()) ui.close();
}

Вот дочерний

AuthWidget::AuthWidget(QWidget * parent)
    :LoaderWidget("auth", parent),
     local_auth_handle(NULL)
{
    ui_loginBtn = m_widget->findChild<QPushButton*>("btnLogIn");
    connect(ui_loginBtn, SIGNAL(clicked(bool)), SLOT(slot_authenticate_system()));
}

слот объявлен как public slots, connect не ругается, просто не работает вообще. Хотя код

connect(ui_loginBtn, SIGNAL(clicked(bool)), qAuth, SLOT(quit()));

выполняется. Макрос Q_OBJECT есть. Не пойму, почему.

Answer 1
connect(ui_loginBtn, SIGNAL(clicked(bool)), SLOT(slot_authenticate_system()));

Такая запись коненкта эквивалентна следующему

connect(ui_loginBtn, SIGNAL(clicked(bool)), this, SLOT(slot_authenticate_system()));

Т.е. сигнал кнопки будет искать слот slot_authenticate_system в объекте AuthWidget. Если вам надо слать сигнал другому объекту, то указывайте явно. Из контекста вопроса непонятно, что такое qAuth

READ ALSO
return функции-вектора

return функции-вектора

Есть функция, которая в вектор помещает числа типа intНеобходимо, чтобы в главной части программы, задав вектор, эта функция заполняла бы его...

247
Проблема с односвязным списком

Проблема с односвязным списком

Вобщем, есть вопросикДелаю односвязный список

304
Как boost::filesystem::directory_entry::path() добавить в const char **

Как boost::filesystem::directory_entry::path() добавить в const char **

Доброе время сутокЕсть класс, у него есть член

285
Табуляция в консоле

Табуляция в консоле

Уже комп виснет от вкладок, а я никак не пойму, как сделать нормальную табуляцию в консолеКод для примера:

264