QComboBox mit qvariant zu selected setzen....

Alles rund um die Programmierung mit Qt
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

QComboBox mit qvariant zu selected setzen....

Beitrag von patrik08 »

Ich habe ein QComboBox von tabelle a kommt nur der land code ... aber im box moechte ich den vollen landname zeigen ...

tabelle b ist so....

CREATE TABLE countries (id INTEGER PRIMARY KEY, name TEXT, code TEXT);
INSERT INTO countries VALUES (1,'Italy','IT');
INSERT INTO countries VALUES (2,'Germany','DE');
INSERT INTO countries VALUES (3,'United Kingdom','GB');
INSERT INTO countries VALUES (4,'USA','US');
INSERT INTO countries VALUES (6,'Switzerland','CH');

und bei if (browsercode == selected) { is die uebreinstimmung ..
und wie activ setzen dass dieses sichtbar ist und nicht der ersten....

und wie den int qvariant retor bekommen ....?


Code: Alles auswählen


typedef QMap<int, QStringList> resultMap;

void  Tab_Addo::AddCountry(int dbi)
{
     /* QComboBox = para_9 */
     QString selected = Item("land_code",dbi);  /* kommt DE raus  andere tabelle */
     para_9->clear(); 
     int loop = 0;
    
    resultMap relist = Query_Qmap_Report( QString( "SELECT id , name, code  FROM countries order by name" ) );
                            resultMap::Iterator it;
                            for ( it = relist.begin(); it != relist.end(); ++it ) {
                               QStringList roxe = it.value();
                               int dbid;
                               QString idsign = roxe.at(0).toLocal8Bit().constData();
                               QString namecountry = roxe.at(1).toLocal8Bit().constData();
                                QString browsercode = roxe.at(2).toLocal8Bit().constData();
                                if (is_numeric(idsign)) {
                                  bool ok; 
                                  dbid = idsign.toInt(&ok);
                                  loop++;
                                    if (browsercode == selected) {
                                    para_9->addItem(namecountry,dbid);
                                    } else {
                                    para_9->addItem(namecountry,dbid);  
                                    }
                                }
                                
                            }
    
    
}

die daten kommen so...

Code: Alles auswählen

resultMap Sqlitedb::Query_Qmap_Report(const QString & fullquery)
{
    resultMap res;
    if (!isOpen()) {
    return res;  /* not connect! */
    }
   SqlLog(QString( "%1 from Query_Qmap_Report 1" ).arg( fullquery ));  /* internal log */
   sqlite3_stmt *vm;
   const char *tail;
   int ncol;
   /*int rownum = 0;*/
   int recnum = 0;
   QString r;
   int err=0;
   QStringList linelister;
   err=sqlite3_prepare(_db,fullquery.toUtf8().constData(),-1,&vm, &tail);
    if (err == SQLITE_OK) {
            while ( sqlite3_step(vm) == SQLITE_ROW ){
               ncol = sqlite3_data_count(vm);
               recnum++;
               linelister.clear();
                    /*file_put_contents_append_debug("resloop.dat","--------------------");*/
                    for (int e=0; e<ncol; e++){
                    r = QString::fromUtf8((const char *) sqlite3_column_text(vm, e));
                    linelister.append(r);
                    /*file_put_contents_append_debug("resloop.dat",QString("%1 dat = %2" ).arg( QString::number(e) , r ));*/
                    }
             res.insert(recnum,linelister);
            }
       sqlite3_finalize(vm);
    } else {
     lastErrorMessage = QString::fromUtf8(sqlite3_errmsg(_db));
    }
    
return res;  
}

patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

para_9->setCurrentIndex(activeselected); ab NULL >>> ist active....:D

Code: Alles auswählen


void  Tab_Addo::AddCountry(int dbi)
{
     /* QComboBox = para_9 */
     QString selected = Item("land_code",dbi);
     para_9->clear(); 
     int loop = 0;
     int activeselected = 0;
    resultMap relist = Query_Qmap_Report( QString( "SELECT id , name, code  FROM countries order by name" ) );
                            resultMap::Iterator it;
                            for ( it = relist.begin(); it != relist.end(); ++it ) {
                               QStringList roxe = it.value();
                               int dbid;
                               QString idsign = roxe.at(0).toLocal8Bit().constData();
                               QString namecountry = roxe.at(1).toLocal8Bit().constData();
                                QString browsercode = roxe.at(2).toLocal8Bit().constData();
                                if (is_numeric(idsign)) {
                                  bool ok; 
                                  dbid = idsign.toInt(&ok);
                                  loop++;
                                    if (browsercode == selected) {
                                    activeselected = loop - 1;
                                    para_9->addItem(namecountry,dbid);
                                    } else {
                                    para_9->addItem(namecountry,dbid);  
                                    }
                                }
                                
                            }
                            
        para_9->setCurrentIndex(activeselected);
    
    
}

Antworten