Автор Тема: [QT4] Собствен сигнал се emit-ва при извикване на класа  (Прочетена 2270 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Имам класа Login:

в него имам слота checkData(QString username, QString password) който се извиква от QPushButton. Дотук всичко е добре. Само че аз искам когато направи проверките за данните да се emit-не сигнала loggedIn(). Естествено правя го след if-овете
Код
GeSHi (C++):
  1. if (pass == ... && user == ... {
  2.    emit loggedIn();
  3. }

Работата е там че дори и без да съм написал emit-а, още когато извикам този клас от друг клас и го connect-на, той автоматично се emit-ва, всякаш в констуктора имам emit, а аз нямам.

Как мога да се оправя в настоящата ситуация?

Благодаря предварително!
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
Без да поместиш кода, не виждам как някой ще помогне, аз не хвърлям боб  ???
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
loginscreen.h

Код
GeSHi (C++):
  1. class LoginScreen {
  2. ...
  3. signals:
  4.    void loggedIn();
  5. }
  6.  


loginscreen.cpp

Код
GeSHi (C++):
  1. ...
  2. if (username == ui->username->text(); && password == ui->password->text()) {
  3.    emit loggedIn(); // със или без това се emit-ва още при инициализирането на класа
  4. }

mainwindow.cpp

Код
GeSHi (C++):
  1. ...
  2. ls = new LoginScreen();
  3. connect(ls, SIGNAL(loggedIn()), this, SLOT(mainSlot());
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
След connect(ls, SIGNAL(loggedIn()), this, SLOT(mainSlot()); се емитва сигнала така ли? Нещо не ми се връзва...   ???
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
След connect(ls, SIGNAL(loggedIn()), this, SLOT(mainSlot()); се емитва сигнала така ли? Нещо не ми се връзва...   ???
Точно така. И на мен не ми се връзва.  :(
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Да нямаш функция със същото име?
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Да нямаш функция със същото име?
Не, не е това.  :(
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
Единственият вариант е да си сложил
Код
GeSHi (C++):
  1. ...
  2. if (username == ui->username->text(); && password == ui->password->text()) {
  3.    emit loggedIn(); // със или без това се emit-ва още при инициализирането на класа
  4. }
да се извиква преди да си инициализирал userame и password, те да празни стрингове и мачват с тези от UI-то, защото и те са празни и сигналът се емитва, друг начин за мен няма.
Активен

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Каква е тази ; след ui->username->text()?
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Тази ";" е просто допусната грешка при писане, тъй като не пиша от личния си компютър, затова и не отговарям по темата... Като се прибера ще видя какви съм ги сготвил и ще пиша отново...
Активен