Seite 1 von 2

[gelöst]Add to ListWidget

Verfasst: 21. März 2006 10:11
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);
	


	
}

Verfasst: 21. März 2006 11:48
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 );

}

Verfasst: 21. März 2006 11:51
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 :-)

Verfasst: 21. März 2006 12:45
von shader76
hi macman

ich glaube dass ist zu hoch für mich

hast du ein beispielcode für mich diesbzgl :?:

Verfasst: 21. März 2006 14:03
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.

Verfasst: 21. März 2006 16:47
von shader76
macman ich habs nicht hinbekommen !
habs probiert mit einem TreeWidgetItem hat dennoch nicht geklappt, die Connections habe ich mitprobiert.

Verfasst: 22. März 2006 07:07
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? :-)

Verfasst: 22. März 2006 11:51
von shader76
---

Verfasst: 22. März 2006 11:59
von macman
Ok, damit hast Du die letzte Frage beantwortet, aber was ist mit den anderen? Einen Fehler sehe ich so nicht.

Verfasst: 22. März 2006 11:59
von chronos
jetz musst du nur noch schreiben was genau nicht funktioniert?
Werden keine Items hinzugefügt? oder wie?

Verfasst: 22. März 2006 12:02
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 ?

Verfasst: 22. März 2006 12:05
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

Verfasst: 22. März 2006 12:08
von chronos
Hast du für dein TreeWidget
myTreeWidget->setColumnCount(2); ausgeführt?

Verfasst: 22. März 2006 12:09
von shader76

Code: Alles auswählen

if (ui.txtRedDomain->text()=="" || ui.txtRedIP->text()=="") 
    return; 
klappt auch nicht

Verfasst: 22. März 2006 12:13
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 ?