Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++, Qt wczytywani danych do QComboBox

Ostatnio zmodyfikowano 2016-04-09 17:54
Autor Wiadomość
Kefirek
Temat założony przez niniejszego użytkownika
C++, Qt wczytywani danych do QComboBox
» 2016-04-09 13:16:39
Witam
Przy wczytywaniu danych(3470 wersów, wersy do 40 znaków) z pliku txt do comboBox'a trochę to trwa to znaczy ok 3 sekund.
Program sprawia wrażenie zawieszonego.
Moje pytanko: czy da się przyśpieszyć wczytanie dużych ilości danych do QComboBox'a i innych kontrolek kontenerowych?.
Pozdrawiam
P-147093
Gibas11
» 2016-04-09 13:46:01
A ile plik otwiera się np. notatnikiem?
P-147094
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-09 13:50:59
Plik Notatnikiem otwiera się grubo poniżej 1 sekundy.
P-147095
Gibas11
» 2016-04-09 13:55:08
A jak to wczytujesz? Zarzuć kawałkiem kodu.
W każdym razie problemem nie jest skrajnie niska prędkość dysku.
P-147096
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-09 14:05:22
Dysk mam SSD więc jest szybki.
Oto kod:

C/C++
void CMiniLotto::FilingCBXFormBase( QComboBox * pCBox, QString path )
{
    QFile file( path );
    if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
         return;
   
    QTextStream in( & file );
    in.setCodec( "UTF-8" );
    int i = 0;
    while( !in.atEnd() )
    {
        pCBox->addItem( in.readLine() );
        pCBox->setItemIcon( i, QIcon( ":/icons/minilotto64.png" ) );
        i++;
    }
    in.flush();
    file.close();
}
P-147098
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-09 14:15:12
Właściwie to jak spojrzałem w kod to zauważyłem, że do dodanie ikony do CombaBox znacznie spowalnia wczytanie danych do Comba.
po wykomentowaniu lini kodu:

C/C++
pCBox->setItemIcon( i, QIcon( ":/icons/minilotto64.png" ) );

wczytuje błyskawicznie.

Właśnie teraz pojawia się dylemat - bo w takim razie trzeba zrezygnować z ikonek w comboBoxie na rzecz wydajności.
No, ale może jest jakieś rozwiązanie???.
P-147099
Gibas11
» 2016-04-09 14:18:02
1. Co robi
in.flush()
? Nie wydaje się potrzebne.
2. Ta linia
":/icons/minilotto64.png"
 nie wczytuje przypadaiem pliku z dysku co wiersz? No i nie wygląda to jak poprawna ścieżka.
P-147100
Gibas11
» 2016-04-09 14:19:59
O, uprzedziłeś mnie. D: Nie da się w Qt jednorazowo wczytać pliku i potem się nim posługiwać?

A właśnie (nie siedzę za bardzo w Qt) – to ikonka do całego QComboBox czy osobno do każdego elementu?
P-147101
« 1 » 2
  Strona 1 z 2 Następna strona