Seite 1 von 1

Qt ListWidget

Verfasst: 12. März 2015 20:11
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

Re: Qt ListWidget

Verfasst: 13. März 2015 11:38
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.

Re: Qt ListWidget

Verfasst: 13. März 2015 20:46
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?

Re: Qt ListWidget

Verfasst: 14. März 2015 09:50
von Christian81
Wie man ein QTableWidget füllt kann man in der Doku nachlesen.

Re: Qt ListWidget

Verfasst: 14. März 2015 11:19
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())

Re: Qt ListWidget

Verfasst: 14. März 2015 13:36
von Christian81
Was sagt der Compiler? --> C++ Grundlagen.

Re: Qt ListWidget

Verfasst: 14. März 2015 15:38
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()) 

Re: Qt ListWidget

Verfasst: 14. März 2015 16:00
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.