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

)
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 ?