[QT4]Dodatkowe okna

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

[QT4]Dodatkowe okna

Post 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ę.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post autor: Atom »

No niestety kombinuje i nawet Twój pomysł nie za bardzo mi działa. Kombinuje na lewo i prawo.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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ę.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post autor: kabanek »

a czy klasa logowanie dziedziczy po QDialog?
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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.
abuda
Sędziwy Jeż
Sędziwy Jeż
Posty: 30
Rejestracja: 06 mar 2009, 14:22
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [QT4]Dodatkowe okna

Post autor: abuda »

może wywołaj wyświetlenie okienka do logowania przez użycie parametru "show" czyli np: "logowanie.show".
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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ć ?
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post autor: kabanek »

chyba wiem, gdzie jest błąd.
Stwórz jeszcze raz okno z logowaniem i wybierz "dialog without buttons" i wtedy spróbuj
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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.
Awatar użytkownika
kabanek
Zakręcona Traszka
Zakręcona Traszka
Posty: 592
Rejestracja: 23 cze 2009, 20:34
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post autor: kabanek »

tutaj masz bardzo prosty przykład
Załączniki
dwaOkna.zip
(9.72 KiB) Pobrany 93 razy
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [QT4]Dodatkowe okna

Post 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).
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Awatar użytkownika
Atom
Sędziwy Jeż
Sędziwy Jeż
Posty: 45
Rejestracja: 08 mar 2009, 12:44
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [QT4]Dodatkowe okna

Post autor: Atom »

Dziękuję kabanek już widzę gdzie robiłem błąd. Jeszcze raz dziękuję :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 39 gości