Ik probeer een bestaand C++/Qt programma aan te passen aan een nieuwe gebruiker, maar omdat ik niet veel kennis heb van C++/Qt levert dit nog wel eens problemen op / gaat het traag, en nu kom ik echt niet verder (ook niet na research). Het is een programma wat drankjes in een bar registreert, een digitaal kassasysteem. In het beginscherm kies je een naam waarna een lijst met producten verschijnt welke 'aangeslagen' kunnen worden.
Onderstaand plaatje toont het beginscherm. Linksboven (QClientInfo) verschijnt een lijst met namen, wanneer een naam geselecteerd wordt verschijnt rechtsboven (QClientInfoWidget) de saldo informatie van deze persoon. Onderaan (QSalestable) is een lijst met al gedane verkopen te zien.

Wanneer op enter wordt gedrukt als de juiste naam is geselecteerd verschijnt onderstaande plaatje, de twee bovenste schermen zijn vervangen door QDrinksWidget (de lijst met producten).

Wat ik nu wil is dat tijdens het kiezen van producten in het tweede plaatje, ook nog de informatie over de persoon voor wie besteld wordt te zien is (de ClientInfoWidget dus). Dat leek me niet zo moeilijk, gewoon een extra widget naast QDrinksWidget plaatsen, maar dit blijkt nog niet te lukken.

Eerst maar is een stukje code, het opbouwen van het eerste scherm:
En als een naam geselecteerd is en op enter is gedrukt wordt het volgende uitgevoerd:
Ik snap dat raiseWidget dw over de andere twee widgets (in hbox) heen plaatst, hoe kan ik nu ook ClientInfoWidget nog naast deze dw plaatsen? Gewoon een nieuwe aanmaken laat niks zien, dw in een nieuwe sbox plaatsen en ClientInfoWidget daar ook in plaatsen laat ook geen ci zien...dus weet het ff niet meer...
Lang verhaal, maar hopelijk snapt iemand er iets van en heeft er iemand hulp!
Onderstaand plaatje toont het beginscherm. Linksboven (QClientInfo) verschijnt een lijst met namen, wanneer een naam geselecteerd wordt verschijnt rechtsboven (QClientInfoWidget) de saldo informatie van deze persoon. Onderaan (QSalestable) is een lijst met al gedane verkopen te zien.
Wanneer op enter wordt gedrukt als de juiste naam is geselecteerd verschijnt onderstaande plaatje, de twee bovenste schermen zijn vervangen door QDrinksWidget (de lijst met producten).
Wat ik nu wil is dat tijdens het kiezen van producten in het tweede plaatje, ook nog de informatie over de persoon voor wie besteld wordt te zien is (de ClientInfoWidget dus). Dat leek me niet zo moeilijk, gewoon een extra widget naast QDrinksWidget plaatsen, maar dit blijkt nog niet te lukken.
Eerst maar is een stukje code, het opbouwen van het eerste scherm:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| Rekhdr::Rekhdr(QApplication *a) : QMainWindow(0, "Flux RekeningManager", WDestructiveClose)
{
app = a;
errorMessageDialog = new QErrorMessage(this);
settings = new Settings();
file = new QPopupMenu( this );
menuBar()->insertItem( "&Bestand", file );
file->insertItem("&Instellingen", this, SLOT(showSettingsDialog()), ALT+Key_I);
file->insertItem("&Databasegegevens opnieuw laden", this, SLOT(initDbDialog()), ALT+Key_D);
file->insertSeparator();
file->insertItem( "&Afsluiten", this, SLOT( close() ), ALT+Key_F4 );
QFont f = font();
f.setPointSize(10);
setFont( f );
file->setFont(f);
vbox = new QVBox(this,"Vbox",0);
widgetStack = new QWidgetStack(vbox, "Window Stack");
hbox = new QHBox(widgetStack,"Hbox",0);
widgetStack->addWidget(hbox);
dw = new QDrinksWidget(widgetStack, "QDrinkswidget");
widgetStack->addWidget(dw);
widgetStack->raiseWidget(hbox);
ql = new QClientList(hbox,"ClientList");
ci = new ClientInfoWidget(hbox, "ClientInfoWidget");
hbox->setMaximumSize(1024,200);
st = new QSalesTable(vbox, "SalesTable");
tw = new TimeWidget(this, "TimeWidget");
statusBar()->addWidget(tw, 0, true);
statusBar()->message("Loading clients..");
setCentralWidget(vbox);
setMinimumSize(800,600);
//FsetMaximumWidth(1024);
show();
Init(); |
En als een naam geselecteerd is en op enter is gedrukt wordt het volgende uitgevoerd:
code:
1
2
| widgetStack->raiseWidget(dw); dw->setFocus(); |
Ik snap dat raiseWidget dw over de andere twee widgets (in hbox) heen plaatst, hoe kan ik nu ook ClientInfoWidget nog naast deze dw plaatsen? Gewoon een nieuwe aanmaken laat niks zien, dw in een nieuwe sbox plaatsen en ClientInfoWidget daar ook in plaatsen laat ook geen ci zien...dus weet het ff niet meer...
Lang verhaal, maar hopelijk snapt iemand er iets van en heeft er iemand hulp!