Dostęp do QlineEdit innego formularza w QT

Odpowiedz Nowy wątek
2018-08-24 13:27

Rejestracja: 2 lata temu

Ostatnio: 9 miesięcy temu

0

cześć
Jak mogę uzyskać dostęp do danych wpisanych w innym formularzu? Jest możliwość zrobić w tym przypadku friend class? Jest to prawidłowe podejście? Jak to zrobić?

void MainWindow::on_pbEdytujKlienta_clicked()
{
    edytujklienta klient;
    klient.setModal(true);
    klient.exec();

   // QString Nazwisko;
     //Nazwisko=ui->lineNazwisko->text();

    QString ID;
    ID=ui->leEdytujKlienta->text();

      QSqlQuery updateQuery = QSqlQuery(db);
      updateQuery.prepare("UPDATE tKlient SET NAZWISKO = :newNAZWISKO WHERE ID = :id ");
      updateQuery.bindValue(":newNAZWISKO", Nazwisko);
      updateQuery.bindValue(":id", ID);
      updateQuery.exec();

       queryModelKlienci = new QSqlQueryModel(this); // tworzę obiekt modelu
       queryModelKlienci->setQuery("SELECT * FROM [Projekt1].[dbo].[tKlient]"); // dodaję zapytanie
       ui->tableKlienci->setModel(queryModelKlienci); // podpinam model pod kontrolkę typu QTableView

}

W MainWindow w pobieram numer ID rekordu, który chcę udytować. Potem chcę, aby wyskoczyło okienko z uzupełnionymi starymi danymi, następnie edytować np. NAZWISKO i zapisać.

KOMUNIKACJA MIEDZY SLOTAMI:

#include "ui_edytujklienta.h"
#include <QtSql>
#include "mainwindow.h"

edytujklienta::edytujklienta(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::edytujklienta)
{
    ui->setupUi(this);

}

edytujklienta::~edytujklienta()
{

    delete ui;
}

void edytujklienta::onNewTextEntered(const QString &text)
{
    qDebug() << "ODEBRANO numer ID: " << text ;

     ui->lNumerKlienta->setText("text");

}

void edytujklienta::on_leImie_returnPressed()
{

}

void edytujklienta::on_lineNazwisko_returnPressed()
{

}

void edytujklienta::on_lineUlica_returnPressed()
{

}

void edytujklienta::on_lineNrDomu_returnPressed()
{

}

void edytujklienta::on_lineNrMieszkania_returnPressed()
{

}

void edytujklienta::on_linePESEL_returnPressed()
{

}

void edytujklienta::on_lineAdresMailowy_returnPressed()
{

}

void edytujklienta::on_lineKodPocztowy_returnPressed()
{

}

void edytujklienta::on_lineMiejscowosc_returnPressed()
{

}

void edytujklienta::on_pbZatwierdz_clicked()
{

    QString Nazwisko,Imie, Ulica, NrDomu, NrMieszkania, PESEL,AdresMiasto, AdresEmail, KodPocztowy, Miejscowosc;
    Nazwisko=ui->lineNazwisko->text();
    Imie=ui->leImie->text();
    Ulica=ui->lineUlica->text();
    NrDomu=ui->lineNrDomu->text();
    NrMieszkania=ui->lineNrMieszkania->text();
    PESEL=ui->linePESEL->text();
    AdresMiasto = ui->lineMiejscowosc->text();
    AdresEmail = ui->lineAdresMailowy->text();
    KodPocztowy = ui->lineKodPocztowy->text();
    Miejscowosc =ui->lineMiejscowosc->text();

    QSqlQuery updateQuery ;
    updateQuery.prepare("UPDATE tKlient SET NAZWISKO = :newNAZWISKO, IMIE = :newIMIE, PESEL = :newPESEL, ADRES_MIASTO = :newADRES_MIASTO, ADRES_EMAIL = :newADRES_EMAIL, ADRES_KOD_POCZTOWY =  :newADRES_KOD_POCZTOWY, ADRES_ULICA = :newADRES_ULICA, ADRES_NR_BUDYNKU = :newADRES_NR_BUDYNKU WHERE ID = :id ");
    updateQuery.bindValue(":newIMIE",Imie);
    updateQuery.bindValue(":newNAZWISKO", Nazwisko);
    updateQuery.bindValue(":newPESEL",PESEL);
    updateQuery.bindValue(":newADRES_MIASTO",AdresMiasto);
    updateQuery.bindValue(":newADRES_EMAIL",AdresMiasto);
    updateQuery.bindValue(":newADRES_KOD_POCZTOWY",KodPocztowy);
    updateQuery.bindValue(":newADRES_ULICA",Ulica);
    updateQuery.bindValue(":newADRES_NR_BUDYNKU", NrMieszkania);
    updateQuery.exec();

    if(updateQuery.exec()){
        qDebug()<< "Record zaktualizowany";

    }else
    {
        qDebug() << "Error: brak aktualizacji";
    }

}

void edytujklienta::on_pbAnuluj_clicked()
{

}

void edytujklienta::on_pbZatwierdz_clicked() potrzebuje ID czyli zmienna text z void edytujklienta::onNewTextEntered(const QString &text).

edytowany 4x, ostatnio: supermario, 2018-08-24 17:37

Pozostało 580 znaków

2018-08-24 14:21

Rejestracja: 13 lat temu

Ostatnio: 54 minuty temu

0

czekaj stój nie zrozumiałem do końca. Mam dane z bazy. Mam tabele, klikam. Wyskakują mi dane i mogę je sobie edytować? Musisz mieć po prostu dostęp do modelu. Pobierasz sobie dane z niego. Ładujesz do jakiś qlineedit itp. MAsz przycisk zapisz. Pobierasz dane wpisane w Pola i wrzucasz do modelu.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
Pokaż pozostałe 3 komentarze
Bo mam dwa osobne formularze. I nie mam dostepu w jednym formularzu do danych z drugiego. - supermario 2018-08-24 14:28
Sygnały i sloty znasz? Po prostu jak wpiszesz ID emitujesz sygnał z numerkiem, druga klasa go odbiera wyciąga dane z modelu i wrzuca sobie do okienka. - revcorey 2018-08-24 14:28
Nie znam. Właśnie o coś takiego mi chodzi :D - supermario 2018-08-24 14:29
BTW. I tu jest pies pogrzebany ludzie biorą qtDesignera zanim się nauczą pdostaw GUI z qt ;/ - revcorey 2018-08-24 14:29
"Nie znam. Właśnie o coś takiego mi chodzi " To się poucz podstaw platformy, naprawdę zamiast robić coś na pałe lepiej poczytać http://doc.qt.io/qt-5/signalsandslots.html - revcorey 2018-08-24 14:30

Pozostało 580 znaków

2018-08-24 15:49

Rejestracja: 12 lat temu

Ostatnio: 2 godziny temu

1

W Qt prawidłowa komunikacja między klasami odbywa się przez sygnały i sloty. KROPKA!
Każde friend oznacza dodanie silnej zależności między klasami, a to zawsze jest źle, szczególnie jeśli jest to zależność cykliczna.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Ok. a jak zrobić komunikacje między slotami? - supermario 2018-08-24 17:33
Pozyskalem ID z innej Klasy, ale teraz nie wiem jak mogę przekazać go do innego slota klasy. Dodalem u gory jak coś kod. - supermario 2018-08-24 17:35

Pozostało 580 znaków

2018-08-30 08:37

Rejestracja: 14 lat temu

Ostatnio: 12 godzin temu

Lokalizacja: Warszawa

1

Eee zaraz tam sygnały i sloty....
W tym wypadku @supermario wystarczy,abyś konstruktor dialogu edytującego wpis zdefiniował sobie tak:

EdytujKlienta(int ID, const QWidget *parent = 0, <tutaj te wszystkie widget flags i window flags>) : public QDialog

i teraz w MainWindow kiedy tworzysz sobie instancję EdytujKlienta to konstruktor wywołujesz:

EdytujKlienta(queryModelKlienci->data(<QModelIndex pokazujący na daną ID>), this, <flagi>);

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 2x, ostatnio: MasterBLB, 2018-08-30 08:38

Pozostało 580 znaków

2018-08-30 09:51

Rejestracja: 2 lata temu

Ostatnio: 1 minuta temu

0

zobacz przykład Address Book

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0