Stworzyłem sobie taki formularz (jest to przykład)
W jaki sposób mogę sprawić, aby przyciski Poprzedni
i Następny
wyświetlały rekordy w kontrolkach znajdujących się na formularzu ?
Kod w załączniku
Stworzyłem sobie taki formularz (jest to przykład)
W jaki sposób mogę sprawić, aby przyciski Poprzedni
i Następny
wyświetlały rekordy w kontrolkach znajdujących się na formularzu ?
Kod w załączniku
Nie wiem dokładnie w czym problem. Możesz się już połączyć z bazą? W kodzie widzę, że masz zapytanie do pobrania danych. Printują Ci się jakieś dane jak je wywołasz z Twojego programu?
@_dominik:
Kod trochę poprawiłem i znajduje się pod tym linkiem
Baza danych do zaimportowania w xampp znajduje się w załączniku
Nazwa bazy danych jaka jest użyta w tym projekcie to "DBViewPDF"
Gdyby ktoś jeszcze doradził dwie rzeczy
poprzedni
i następny
w taki sposób aby poprawnie pokazywały rekordyad. 1 nie wiem czy to taki zły pomysł. Zwłaszcza jeśli to by miało być tylko read only to może lepiej, dać tylko jedno zapytanie do bazy i w jakieś strukturze buforować wyniki niż odpytywać bazę o każdy rekord. Możesz też poczytać o mvc. Qt bardzo dobrze wspiera to rozwiązanie i w sumie nie musiał byś się martwić o wiele rzeczy. Link
Propozycja:
QVector <QString> myStrID;
QVector <QString> myStrPath;
To zamień sobie na jakąś strukturę, wtedy będziesz miał do pilnowania jeden vector.
Propozycja rozwiązania:
Zrób sobie zmienną np. currentIndex
, aby trzymać aktualną pozycję na której jesteś, wtedy pod funkcję, które reagują na sygnały kliknięcia będziesz mógł w łatwy sposób ustawić text w obu kontrolkach, a łapiąc w zakres
0 <= currentIndex < QVector::size()
nie wypadniesz z vectora
no i tutaj jest problem, bo jeszcze nie zrozumiałem jak używać currentIndex bo to jest z klasy QModelIndex
Tutaj można zrobić to "na około" - starsi stażem zrobią to lepiej z QModelIndex, ale ja tutaj postaram się przedstawić obejście.
W mainwindow.h
tworzysz int m_currentIndex {0};
bool MainWindow::BPrev()
{
if(m_currentIndex != 0)
{
m_currentIndex--;
}
ui->myuiID->setText(myStrID[m_currentIndex]);
}
bool MainWindow::BNext()
{
if(m_currentIndex < myStrID.size()-1)
{
m_currentIndex++;
}
ui->myuiID->setText(myStrID[m_currentIndex]);
}
Mam nadzieję, że pomoże Ci dojść ten przykład do rozwiązania problemu.