QComboBox jak dobrać się do listy?

0

witam, mam u siebie w programie QComboBoxa i korzystam z tej metody:

void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() )
Adds an item to the combobox with the given text, and containing the specified userData (stored in the Qt::UserRole). The item is appended to the list of existing items.

czyli QComboBox wyswietla mi jakis tekst a dane sa przechowywane w jakiejs liscie. Pytanie jest takie: jak mozna sie dostac do tej listy?? co to jest to Qt::UserRole?

0

QComboBox::view() Bracie.Dostaniesz wskaźnika na QListView.Zaprawdę,poczytaj Qt Assistanta,bo wszystko jest w nim ładnie opisane

0
class Example
{
    public:
        Example(const QString &text_, const QString &value_)
            : text(text_), value(value_){}
        QString text;
        QString value;
};
Q_DECLARE_METATYPE(Example*)

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QComboBox cb;
    Example ex1("Test1", "Wartosc1");
    Example ex2("Test2", "Wartosc2");

    cb.addItem(ex1.text, QVariant::fromValue(&ex1));
    cb.addItem(ex2.text, QVariant::fromValue(&ex2));

    Example tmp = *cb.itemData(1).value<Example*>();

    QMessageBox::information(0, "nfo", tmp.value);
    cb.show();

    return a.exec();
}

może to coś rozjaśni :)

0

Bez urazy Bracie matek,ale to nie jest odpowiedź na zadane pytanie.W dodatku mieszasz tutaj niepotrzebną klasą Example.
@Stefano
Tak w ogóle to po co Ci dostęp do owej listy?Itemy z comboxa pobiera się poprzez itemText() czy (rzadziej) itemData()

0

wystarczy popatrzeć w dokumentację.
Najprościej do tej listy można dobrać się poprzez: count(), itemText(int index), itemData(int index), itemIcon(int index).
Lub bardziej profesjonalnie przez: model().
Model pozwala na operowanie na różnych danych i te role kryje za sobą znaczenie jakie typu są to dane (mogą one określać jak dany element ma być wyświetlony w widoku). W przypadku UserRole to są dane przeznaczone do własnego użytku i nie są interpretowane przez widok (nie ma to wpływu na wygląd).

0
MasterBLB napisał(a)

Bez urazy Bracie matek,ale to nie jest odpowiedź na zadane pytanie.W dodatku mieszasz tutaj niepotrzebną klasą Example.
@Stefano
Tak w ogóle to po co Ci dostęp do owej listy?Itemy z comboxa pobiera się poprzez itemText() czy (rzadziej) itemData()

dzieki za odpowiedz, uzylem itemData(), potrzebowalem tego do bazy danych, w qcomboboxie wyswietla mi sie nazwa a na liscie jest przechowywana interesujaca mnie zmienna ktora musze pozniej wrzucic do bazy danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1