[gelöst]Add to ListWidget

Alles rund um die Programmierung mit Qt
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

[gelöst]Add to ListWidget

Beitrag von shader76 »

Hallo Forum,

das ist eine meiner GUI´s (so ungefähr sieht sie aus)

--------------Wert1--------------------------Wert2
----------LINEEDIT1-------------------------LINEEDIT2


------------------------LISTWIDGET---------------------


ADDbutton---CHANGEbutton-------DELETEbutton

Wie schaffe ich es dass wenn ich beide Lineedits ausgefüllt habe
(Wert1 & Wert2) dass diese dann unten in meiner ListWidget erscheinen
und zwar Wert1 linkbündig und Wert2 rechtsbündig (also genau darunter)

Habe diesbzgl das Getting Started Tutorial versucht , ist aber leider nicht viel dabei rausgekommen. Für einen kleinen Ansatz wäre ich sehr dankbar, da ich es schon verstehen und selber machen möchte.

Code: Alles auswählen

void ComAdres::on_btnNewWert_clicked()
{
	QString sRow = ui.txtWert->text();
	
	QListWidgetItem *item = new QListWidgetItem(sRow,ui.lstWerte);
	item->setData(Qt::UserRole, sRow);
	


	
}
Zuletzt geändert von shader76 am 22. März 2006 13:51, insgesamt 1-mal geändert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

ok habs hinbekommen,...hatte wieder mal einen kleinen Fehler (den wollt ihr nicht wissen :oops: )

das Problem was noch übrig bleibt ist dass ich wert1 und wert2 in einer zeile haben möchte und wenn ich eins anwähle die ganze zeile angewählt werden soll.

Code: Alles auswählen

void ComAdres::on_btnNewWert_clicked()
{
	m_strwertDomain= ui.wertDomain->text();
	m_strwertIP = ui.wertIP->text();

	ui.listeWerteDomain->insertItem(1,m_strwertDomain);
	ui.listeWerteIP->insertItem(1,m_strwertIP );

}
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Verbinde die Signale editingFinished der beiden LineEdits mit einem Slot. In dem prüfst Du ob in beiden Lineedits was drin steht und dann erst erstellst Du ein neues Item in der Listbox. Willst Du aber beide Einträge in einem Item haben, dann brauchst Du ein QTreeWidget. Ich denke das reicht für den Anfang :-)
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

hi macman

ich glaube dass ist zu hoch für mich

hast du ein beispielcode für mich diesbzgl :?:
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

shader76 hat geschrieben:hast du ein beispielcode für mich diesbzgl :?:
Beispielcode? Nö, Du willst es doch selbst machen :-)

Erstelle einen Slot void OnEditFinished();
Im Konstruktor deines Dialogs befindet sich ein setupUi(this). Danach verbindest Du die Signale deiner LineEdit mit dem Slot:
connect(lineEdit1, SIGNAL(editingFinished()), this, SLOT(OnEditFinished()));
connect(lineEdit2, SIGNAL(editingFinished()), this, SLOT(OnEditFinished()));

Der Slot sieht dann ungefähr so aus:

Code: Alles auswählen

if (lineEdit1->text()=="" || lineEdit2->text()=="")
    return;

QTreeWidgetItem* item = new QTreeWidgetItem(myTreeWidget);
item->setText(0, lineEdit1->text());
item->setText(1, lineEdit2->text());
item->setTextAlignment(0, links);
item->setTextAlignment(1, rechts);
Probier halt.
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

macman ich habs nicht hinbekommen !
habs probiert mit einem TreeWidgetItem hat dennoch nicht geklappt, die Connections habe ich mitprobiert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Da gibt es einen sehr guten Debugger in Visual Studio. Werden die Connections eingerichtet? Wird der Slot aufgerufen? Was funktioniert denn nicht? Was hast Du probiert? Und wo ist der Code? :-)
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

---
Zuletzt geändert von shader76 am 22. März 2006 13:08, insgesamt 1-mal geändert.
-shader76-
-Visual Studio.Net 2003 & QT4.1
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ok, damit hast Du die letzte Frage beantwortet, aber was ist mit den anderen? Einen Fehler sehe ich so nicht.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

jetz musst du nur noch schreiben was genau nicht funktioniert?
Werden keine Items hinzugefügt? oder wie?
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

@chronos:Genau es werden keine Items hinzugefügt, was ich erreichen möchte dass ich beides in einer Zeile habe und auch durch einen Klick die ganze Zeile auswählen kann.


@macman : welche anderen meinst du ?
-shader76-
-Visual Studio.Net 2003 & QT4.1
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

Bei deinem obigen CodeBeispiel wird für jedes mal wenn du in einem Textfeld mit dem eingeben fertig wirst wird immer ein neues Item hinzugefügt:
1. Textfeld editiert -> Item1 wird hinzugefügt (nur der zB linksbündige Text ist vorhanden)
2. Textfeld editiert.> Item 2 wird hinzugefügt diesmal mit den beiden Texten.
Du muss überprüfen ob in beiden Lineedits Text eingegeben wurde bevor du hinzufügst
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

Hast du für dein TreeWidget
myTreeWidget->setColumnCount(2); ausgeführt?
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

Code: Alles auswählen

if (ui.txtRedDomain->text()=="" || ui.txtRedIP->text()=="") 
    return; 
klappt auch nicht
-shader76-
-Visual Studio.Net 2003 & QT4.1
shader76
Beiträge: 107
Registriert: 3. März 2006 14:29

Beitrag von shader76 »

hey es hat geklappt !!

nur gibt es eine möglichkeit die Balken 0 und 1 zu verstecken so dass sie nicht sichtbar sind ?
-shader76-
-Visual Studio.Net 2003 & QT4.1
Antworten