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ą
oraz metodę publiczną:
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ę