maniek1310 Temat założony przez niniejszego użytkownika |
[cURL][QT] Wyświetlanie w qTableWidget ile pobrano pliku » 2014-01-25 18:40:36 Witam, napisałem program, który pobiera plik z internetu i mam problem z wyświetleniem w qTableWidget ile pobrano pliku. Poniżej przedstawiam funkcje odpowiedzialne za pobieranie plików i błąd jaki wyskakuje. void get_file( const char * url, const char * file_name, const char * mode, int a ) { CURL * easyhandle = curl_easy_init(); curl_easy_setopt( easyhandle, CURLOPT_URL, url ); std::FILE * file = std::fopen( file_name, mode ); if( a == 1 ) curl_easy_setopt( easyhandle, CURLOPT_NOPROGRESS, 0 ); curl_easy_setopt( easyhandle, CURLOPT_PROGRESSFUNCTION, progressbar ); curl_easy_setopt( easyhandle, CURLOPT_WRITEDATA, file ); curl_easy_perform( easyhandle ); curl_easy_cleanup( easyhandle ); fclose( file ); }
int progressbar( void * clientp, double dltotal, double dlnow, double ultotal, double ulnow ) { int dltotalcalk =( dlnow * 100 ) / dltotal; dltotal /= 1024; dltotal /= 1024; dlnow /= 1024; dlnow /= 1024; std::ostringstream ile_procent( std::ostringstream::ate ); if( dltotal != 0 and dlnow != 0 ) { ile_procent << dltotalcalk; ile_procent << " %"; } else { ile_procent << "0 %"; } ui->tableWidget2->setItem( 0, 0, new QTableWidgetItem( ile_procent.str().c_str() ) ); return 0; } 'ui' was not declared in this scope
Ps. ui napewno jest zadeklarowane bo używam w innych częściach programu. |
|
sajmon |
» 2014-01-25 19:17:45 |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2014-01-26 11:31:51 Wiem, ale jestem przyzwyczajony do cURL. A jak przypisuje funkcję progressbar do ui to znowu wyskakuje, że funkcja nie jest prawidłowo sformułowana (jak będę w domu to wyślę dokładny błąd). |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2014-01-26 15:38:35 Jest jakaś funkcja, która tak jakby przerzuca funkcję progressbar do klasy ui ?? |
|
sajmon |
» 2014-01-26 16:26:03 Zrób z nich po prostu sloty wewnątrz klasy twojego okna i wtedy będziesz miał dostęp do ui. |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2014-01-26 16:53:33 Dodałem do private slots funkcję progressbar i teraz wyskakują mi takie błędy : 'int Config_os::progressbar(void*, double, double, double, double)' is private Plik config_os.h ... namespace Ui { class Config_os; }
class Config_os : public QMainWindow { Q_OBJECT public: explicit Config_os( QWidget * parent = 0 ); ~Config_os(); private slots: void usun_sloty(); void on_actionSystem_triggered(); void on_actionP_yta_G_wna_triggered(); void on_actionProcesor_triggered(); void on_actionKarta_Graficzna_triggered(); void on_actionZainstalowane_triggered(); void on_actionO_Autorze_triggered(); void on_actionDo_pobrania_triggered(); void on_p_akt_down_clicked(); int progressbar( void * clientp, double dltotal, double dlnow, double ultotal, double ulnow ); private: Ui::Config_os * ui; }; ... Plik config_os.cpp void get_file( const char * url, const char * file_name, const char * mode, int a ) { CURL * easyhandle = curl_easy_init(); curl_easy_setopt( easyhandle, CURLOPT_URL, url ); std::FILE * file = std::fopen( file_name, mode ); if( a == 1 ) curl_easy_setopt( easyhandle, CURLOPT_NOPROGRESS, 0 ); curl_easy_setopt( easyhandle, CURLOPT_PROGRESSFUNCTION, Config_os::progressbar ); curl_easy_setopt( easyhandle, CURLOPT_WRITEDATA, file ); curl_easy_perform( easyhandle ); curl_easy_cleanup( easyhandle ); fclose( file ); }
int Config_os::progressbar( void * clientp, double dltotal, double dlnow, double ultotal, double ulnow ) { int dltotalcalk =( dlnow * 100 ) / dltotal; dltotal /= 1024; dltotal /= 1024; dlnow /= 1024; dlnow /= 1024; std::ostringstream ile_procent( std::ostringstream::ate ); if( dltotal != 0 and dlnow != 0 ) { ile_procent << dltotalcalk; ile_procent << " %"; } else { ile_procent << "0 %"; } ui->t_akt_down->setText( ile_procent.str().c_str() ); return 0; } |
|
sajmon |
» 2014-01-26 16:58:17 No ale wszystko miałeś przerobić na sloty to get_file też i wtedy powinno śmigać elegancko Teraz w dalszym ciągu próbujesz użyć czegoś prywatnego z klasy poza tą klasą (wtedy ui a teraz progressbar) więc nie bangla :( |
|
maniek1310 Temat założony przez niniejszego użytkownika |
» 2014-01-26 17:06:26 No to teraz przy każdym użyciu funkcji get_file wyskakuje get_file was not declared in this scope. |
|
« 1 » 2 |