QlistBox, problem beim einfücgeb von listenelementen.

Alles rund um die Programmierung mit Qt
Antworten
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

QlistBox, problem beim einfücgeb von listenelementen.

Beitrag von slash-ex »

wenn ich zum beispiel via:

Code: Alles auswählen

listBox_items.insertItem("foo", -1);
meine listbox ein element einfügen will, bekomme ich leider ein unschönes

Code: Alles auswählen

/form_wh40k_helper.ui.h:50: error: request for member ‘insertItem’ in ‘((Form1*)this)->Form1::listBox_items’, which is of non-class type ‘QListBox*
wie man sieht hab ichs in meine klassenimplementation vom qt-designer geschrieben...
da hab ich gleich mal eine frage... ich habe gehört das die mit qt4 irgendwie abgeschafft wurde wie muss das jetzt aussehen?
ich hab nicht so viel ahnung mit qt... meistens hab ich immer nur algorythmenklassen in c++ geschrieben, wie kleine textparser... aber auch nur ziemlich unregelmäßig.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Generell: Widgets als Pointer, also listBox -> insertItem();
Es gibt keine QListBox in Qt4 mehr, alternativ kann man QListWidget verwenden, dann sieht das etwa so aus:

Code: Alles auswählen

QListWidget *lstWidget = new QListWidget( this );
lstWidget -> addItem ( const QString & label ); // hinzufügen
lstWidget -> insertItem ( int row, const QString & label ); // an einer bestimmten stelle einfügen
Die Dokumentation von Trolltech ist sehr gut um solche Dinge herauszufinden. http://doc.trolltech.com
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

ich habe jetzt noch eine combobox wo eineige sachen drin stehen...
wenn da jetzt da "HQ" auswähle wie bekomm ich da meine funktion geladen?

connect(comboBox_type, SIGNAL(activated("HQ") ), listBox_items, SLOT(load_itm("#HQ#") ) );

ich bekomm da sowas:
QObject::connect: No such signal QComboBox::activated("HQ")
QObject::connect: (sender name: 'comboBox_type')
QObject::connect: (receiver name: 'listBox_items')
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Code: Alles auswählen

SIGNAL(activated("HQ") )
Das geht leider nicht.
Wenn ein Signal einen Parameter übermittelt, so kommt der immer aus dem Signal.
Du kannst ihn nicht selbst festlegen.
Bedeutet: Das Signal activatedt(const QString &) sendet immer den String,
der eben ausgewählt wurde. Du kannst da nix reinschreiben.

Du musst also im Slot prüfen, welcher String da übergeben wurde.

HENNING
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

gut dann hab ich das so umgebasttelt.
inder form.ui.h

Code: Alles auswählen

void Form1::load_itm(QString str)
{
    //listBox_items.clearInputString();
    
    bool found = false;
    
    parser prs(128);
    prs.read("/home/dgdaniel/develop/Qt/lists/orks/base/", "list.wh40k");
    
    for(int i = 0; ;i++)
    {
	if(prs.get_string(i) == str)
	{
	   found = true;
	   i++;
               }
	if(found)
	{
	    if(prs.get_string(i) != "\v")
		listBox_items->insertItem(prs.get_string(i), i * (-1) );
		//listBox_items.insertItem(prs.get_string(i), i*(-1) );
	    else break;
	}
    }
}

Code: Alles auswählen

#include <qapplication.h>
#include "form_wh40k_helper.h"

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    Form1 w;
    w.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    
    QObject::connect(w.comboBox_type, SIGNAL(activated() ), &w, SLOT(load_itm() ) );
    
    return a.exec();
}
also da bekomm ich
error: no matching function for call to ‘QObject::connect(QComboBox*&, const char [13], Form1*, const char [18])

irgendwo muss da ein dummer fehler sein!
also ist das mit diesen signals so das die parameter die inder doc sthen automatisch an den passenden slot übergeben werden... wie bei meinen selbst geschriebenen...?
wenn ich so drüber nachdenke muss also meine load_itm fkt. falsch sein? oder?
noch eine wichtige frage: was soll diese komische impl. datei sein also in meinem fall die form_wk40k_*..ui.h?
warum gelten dort andere namespaces, also kein QObject::? sorry hab schon lang nicht mehr ge-qt.
aus der ui wird doch auch src-code gemacht? wo kommt dann der impl. code hin?
m.trix
Beiträge: 49
Registriert: 12. Oktober 2005 09:51
Wohnort: Manhattan

Beitrag von m.trix »

Schreib mal die implemetierung von Form1::load_itm() unter "private slots:". Und wieso connectest nicht im constructor?
Antworten