[gelöst] Widget in MainWindow einbinden

Alles rund um die Programmierung mit Qt
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

das wird nix mehr..... :D
für 70¤/h baue ich´s dir :lol:
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

also muss ich tabwidget ansprechen?? ( aber die heissen ja alle im Designer tabwidget)
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hmm, muss ich irgendwas mit indexOf machen??
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

nein.... jedes tabwidget kannst einzeln ansprechen.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja aber die heissen alle gleich, und wenn ich den Namen ändern will, ändern sich die Namen der anderen auch.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

ui.tab_2 ...

wie lange programmierst du denn schon?
du versuchst da absolut wirres zeug...
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

70¤ , ne das ist zu viel, ich will das alleine hinkriegen, ich will ja schließlich was lernen ^^ und was in meinen Bericht schreiben ^^.
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

nici hat geschrieben:ja aber die heissen alle gleich, und wenn ich den Namen ändern will, ändern sich die Namen der anderen auch.
Du brauchst

Code: Alles auswählen

tabWidget->widget(0);
wobei 0 der Index des Tabs ist. Je nachdem wie du das im Designer zusammengezimmert hast, kann es sein dass du hier ein einfaches QWidget zurück bekommst, nicht aber den QPushButton den du haben willst.

Auf einen Button kannst du auch direkt zugreifen mit dem Namen den du im Designer angegeben hast. Dazu klickst du im Designer auf den Button, und schaust was im Eigenschaftsfenster bei "objectName" steht. Da könnte z.B. pushButton stehn, oder pushButton_2.

Im Quellcode kannst du dann was mit dem Button machen, was auch immer du eben tun willst.

Code: Alles auswählen

void MainWindow::methode()
{
   pushButton->setText("Button1");
   pushButton_2->setText("Button2");
}
Und nochmal: Wie die Objekte im Designer heißen kannst nur du uns sagen indem du nachschaust. Die können nicht alle gleich heißen, weil die Objektnamen eindeutig sein müssen. Nennst du sie von Hand alle "pushButton", nummeriert der Designer das automatisch mit _1, _2 usw. durch.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hi,

ne die PushButton haben alle Sinnvolle Namen, so wie loadPB.
Ich hab das jetzt mal so gemacht, aber es nützt nichts.

Code: Alles auswählen

// dieser Button ist auf dem zweiten Tab
void MainWindow::loadFile(){
//da es der zweite Tab sein soll = widget(1);
		tabWidget->widget(1);	
		loadPB_2->setText("laden");
	
QString fileName = QFileDialog::getOpenFileName(this, "Open File", "/home",("Images(*.png *.gif *.jgp *.jpeg *.bmp *.tiff *.xbm *.xpm)"));
	if(!fileName.isEmpty()){											  
 	QImage file(fileName);
    if(file.isNull()) { qWarning()<<"Fehler beim öffnen der Datei!";
	}
	qWarning() << "ok";
	imageLabel->setPixmap(QPixmap::fromImage(file));
	}	
}
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Code: Alles auswählen

      tabWidget->widget(1);   
      loadPB_2->setText("laden"); 
Sind unnötig. Den Text hast du sicher schon im Designer hingeschrieben, und ->widget() bringt nichts wenn du nichts mit dem Rückgabewert machen willst ;)

Versuch mal statt QImage das hier:

Code: Alles auswählen

QPixmap pixmap;
pixmap.load(fileName);
imageLabel->setPixmap(pixmap);
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ähm ne das Problem ist, dass wenn ich auf den Button drück, dass gar nichts passiert.
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

nici hat geschrieben:ähm ne das Problem ist, dass wenn ich auf den Button drück, dass gar nichts passiert.
Kommt die "ok" Ausgabe? Wenn nein, hat der connect geklappt? (connect liefert true bei Erfolg und false bei Fehler. Ausserdem kommt in der Konsole eine Ausgabe, wenn er ein Signal oder Slot nicht finden konnte).

Alternativ einfach ganz an den Anfang deiner Slot-Methode ein QMessageBox::information(this, "xx", "xx");

Wenn die kommt, klappt zumindest der connect.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

Code: Alles auswählen

hmm ne also es kommt kein "ok" kein gar nichts,. 

meinst du mit an den Anfang von der Slot-Methode

// dieser Button ist auf dem zweiten Tab
void MainWindow::loadFile(){
		tabWidget->widget(1);	
		loadPB_2->setText("laden");
	QMessageBox::information(this, "xx", "xx");
QString fileName = QFileDialog::getOpenFileName(this, "Open File", "/home",("Images(*.png *.gif *.jgp *.jpeg *.bmp *.tiff *.xbm *.xpm)"));
	if(!fileName.isEmpty()){											  
 	QImage file(fileName);
    if(file.isNull()) { qWarning()<<"Fehler beim öffnen der Datei!";
	}
	qWarning() << "ok";
	imageLabel->setPixmap(QPixmap::fromImage(file));
	}		
}
soll ich nicht lieber ein QDebug machen.
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hi
also zu erst erscheint die MessageBox, wenn ich auf der MessageBox das ok drücke kommt dann das eigentliche Fenster zum öffnen einer Datei.
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ups ich hatte im connect den Falschen Namen
Hmm mir fällt nichts ein ^^
Antworten