Strona 1 z 1

[QT4]Dodatkowe okna

: 10 sie 2010, 13:05
autor: Atom
Witam
Chciałbym wykonać logowanie do mojego programu. Chciałbym by przed ukazaniem się okna głównego wyskoczyło małe okno logowania oraz możliwość stworzenia nowego okna. Okno główne już posiadam, lecz nie mam pojęcia jak wykonać te dodatkowe okno logowania. Czy ktoś by miał pomysł gdzie w kodzie umieścić owe okno i w jaki sposób wykonać takie rozwiązanie ?

Z góry dziękuję.

Odp: [QT4]Dodatkowe okna

: 10 sie 2010, 13:46
autor: kabanek
trochę kreatywności...

Kod: Zaznacz cały

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    LoginForm login;
    MainWindow window;
    login.exec();

    if (login.correct())
        window.show();
    else
        return 0;

    return app.exec();
}
czy coś w tym stylu... pisane z pamięci więc mogą być jakieś błędy

Odp: [QT4]Dodatkowe okna

: 16 sie 2010, 16:42
autor: Atom
No niestety kombinuje i nawet Twój pomysł nie za bardzo mi działa. Kombinuje na lewo i prawo.

Odp: [QT4]Dodatkowe okna

: 16 sie 2010, 16:57
autor: kabanek
hmm.... Masz dwa okna. Jedno to okno główne a drugie to okno do logowania.

tam gdzie masz okno do logowania dodajesz 2 rzeczy:
zmienne prywatną

Kod: Zaznacz cały

bool Correct;
oraz metodę publiczną:

Kod: Zaznacz cały

bool correct();
w pliku .cpp ją deklarujesz:

Kod: Zaznacz cały

bool LoginForm::correct()
{
return Correct;
}
teraz w zdarzeniu onClick na guziku, który odpowiada za sprawdzanie hasła piszesz np coś takiego:

Kod: Zaznacz cały

if (ui->lineText->text() == "login" && ui->lineText_2->text() == "tajneHaslo")
Correct = true;
else
Correct = false;
i w przeważającej większości main.cpp też Ci podałem

ps to jest takie bardzo proste podejście do tematu

Odp: [QT4]Dodatkowe okna

: 16 sie 2010, 17:30
autor: Atom
Ale ja mam problem z samym wywołaniem tego okna.
Dostaję ciągle taki błąd :

Kod: Zaznacz cały

‘class logowanie’ has no member named ‘exec’
a z resztą to ja sobie raczej poradzę.

Odp: [QT4]Dodatkowe okna

: 16 sie 2010, 17:49
autor: kabanek
a czy klasa logowanie dziedziczy po QDialog?

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 15:11
autor: Atom

Kod: Zaznacz cały

#ifndef LOGOWANIE_H
#define LOGOWANIE_H

#include <QWidget>

namespace Ui {
    class logowanie;
}
class logowanie : public QWidget
{
    Q_OBJECT

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

private:
    Ui::logowanie *ui;
};
#endif // LOGOWANIE_H
Tak wygląda mój plik nagłówkowy sugerowałem się plikiem do okna głównego.

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 15:21
autor: abuda
może wywołaj wyświetlenie okienka do logowania przez użycie parametru "show" czyli np: "logowanie.show".

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 15:29
autor: Atom

Kod: Zaznacz cały

logowanie b;
    b.show();

    Widget w;
    w.show();

    return a.exec();
   return b.exec();
W ten sposób wywołuję. To w takim razie z jakim parametrem wywoływać ?

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 15:41
autor: kabanek
chyba wiem, gdzie jest błąd.
Stwórz jeszcze raz okno z logowaniem i wybierz "dialog without buttons" i wtedy spróbuj

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 16:00
autor: Atom
Nic z tego to samo się dzieje.

Nadal mam takie błedy:

Kod: Zaznacz cały

: In function ‘int main(int, char**)’:
 ‘class logowanie’ has no member named ‘exec’
A czy jest to ważne takie coś jak system kontroli wersji i co to jest co to dokładnie kontroluje i jak to działa ? Za każdym razem daje na brak.

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 16:40
autor: kabanek
tutaj masz bardzo prosty przykład

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 17:30
autor: beluosus
Atom pisze:

Kod: Zaznacz cały

logowanie b;
    b.show();

    Widget w;
    w.show();

    return a.exec();
   return b.exec();
W ten sposób wywołuję. To w takim razie z jakim parametrem wywoływać ?
Drugi return nigdy się nie wykona, więc nie wiem po co go dajesz, zwłaszcza, że klasa logowanie nie posiada metody exec() (która w tym kontekście jest charakterystyczna dla QApplication). Masz zrobić tak jak kabanek napisał zaraz pod pierwszym postem (przy czym login ma dziedziczyć po QDialog).

Odp: [QT4]Dodatkowe okna

: 18 sie 2010, 19:13
autor: Atom
Dziękuję kabanek już widzę gdzie robiłem błąd. Jeszcze raz dziękuję :)