Qt ListWidget

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Murmele
Beiträge: 7
Registriert: 14. Mai 2013 14:30

Qt ListWidget

Beitrag von Murmele »

Guten Abend,

ich versuche gerade ein Programm zu schreiben, in welchem verschiedene Namen eingetragen werden sollen. Den Namen sollen verschiedene Eigenschaften zugwiesen werden und dann die Namen in einem ListWidget angezeigt werden. Sobald man im ListWidget auf einem Namen klickt soll in einem zweiten ListWidget alle Eigenschaften mit zugehörigem Wert angezeigt werden und auch dort bearbeitet werden können (wie in Qt Designer oder so). Was ist die eleganteste Methode diese Namen, welche dynamisch generiert werden, abzuspeichern und im ListWidget anzuzeigen.
Hab mir gedacht, das über eine verkettete Liste zu machen, welche wiederum eine Klasse enthält, welche die Eigenschaften der verschiedenen Namen enthält. Da mir diese Methode ein wenig unelegant vorkommt, wollte ich mal fragen, wie man das besser machen könnte?

Grüße

Murmele
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt ListWidget

Beitrag von Christian81 »

Abgehesen davon dass eine verkettete Liste m.E. der falsche Container ist (Vector/Map wäre wohl sinnvoller) üsste ich nicht was falsch daran sein sollte.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Murmele
Beiträge: 7
Registriert: 14. Mai 2013 14:30

Re: Qt ListWidget

Beitrag von Murmele »

Vielen Dank für die Antwort. Doch leider komm ich jetzt doch nicht weiter: Welches Widget ist am besten geeignet, Listen von Strings zu speichern, bei welcher man z.B. auf den Namen Doppelklick macht, dass man den dann noch ändern kann? Zum anderen dachte ich, die Eigenschaften in einem TableWidget zu speichern, also ersten Spalte die EIgenschaften und in der zweiten Spalte die Werte zu den dazugehörigen Eigenschaften. Die Eigenschaften möchte ich in einer Eigenen Klasse gespeichert haben

Code: Alles auswählen

class Pad
{
public:
    QString name;
    QString pos_x;
    QString pos_y;
    QString width;
    QString height;
};
Ich weiß jetzt nur nicht, wie ich die Werte im TableWidget eintrage, sobald ich im ListWidget auf den Namen klicke.
Ich habe einen Dialog der vom MainWindow aus aufgerufen wird. Wie kann ich von diesem Dialog auf Widgets vom MainWindow zugreifen, um auszulesen, ob der Namen bereits in der ListWidget vorhanden ist?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt ListWidget

Beitrag von Christian81 »

Wie man ein QTableWidget füllt kann man in der Doku nachlesen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Murmele
Beiträge: 7
Registriert: 14. Mai 2013 14:30

Re: Qt ListWidget

Beitrag von Murmele »

ich übergebe das MainWindow mit

Code: Alles auswählen

NameDialog::NameDialog(MainWindow *window)
{
        setupUi(this);
        main_window = window;
Wieso kann ich nicht auf das ListWidget zugreifen?

Code: Alles auswählen

if(main_window->listWidget_pads_name->findItems(le_new_name->text(), Qt::MatchExactly).isEmpty())
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt ListWidget

Beitrag von Christian81 »

Was sagt der Compiler? --> C++ Grundlagen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Murmele
Beiträge: 7
Registriert: 14. Mai 2013 14:30

Re: Qt ListWidget

Beitrag von Murmele »

Dieser Fehler wird angezeigt:

Code: Alles auswählen

/ui_mainwindow.h:65: Fehler: 'QListWidget* Ui_MainWindow::listWidget_pads_name' is inaccessible QListWidget *listWidget_pads_name; 
/namedialog.cpp:38: Fehler: within this context
         if(main_window->listWidget_pads_name->findItems(le_new_name->text(), Qt::MatchExactly).isEmpty()) 
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt ListWidget

Beitrag von Christian81 »

Und was sagt uns das? Zum einen sollte man von einer Klasse nicht direkt auf Member einer anderen Klasse zugreifen und wenn man es doch will (was sehr schlechter Stil ist) dann muss dieser Member public sein. Ich empfehle hier ein C++ Grundlagenbuch.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten