2017-09-24 4 views
-1

ファイルをプログレスバーに書き込むにはどうすればよいですか?qt ProgressBarによるファイル読み込みの接続

QFile wr(my_file); 
    connect(&wr, &QFile::pos , ui->bar, &QProgressBar::setValue); 

そして、このバージョン:

が、私はこのバージョンを試みた - The slot requires more arguments than the signal provides.

QFile wr(my_file); 
    Qbytearray my_data; 
    connect(&my_data, &Qbytearray::count , ui->bar, &QProgressBar::setValue); 

この2つのバージョン上記動作しませんでしたが 目はTypes pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style castと最初は を与えるというエラーが発生します - Signal and slot arguments are not compatible.

readiアップロードされたファイルの進行状況をメモリ上で確認できるように、ファイルからプログレスバーに移動しますか?

  • 私は私が求めていますが、私はプログレスバー

答えて

2

に適切な信号を接続するために使用する代替適切な信号を/生成する方法である、私が使用している機能は、信号ではないことを知っています私はあなたがこれを試すことができると思う:

class MyQFile : public QFile { 
    Q_OBJECT 
public: 
    MyQFile(const QString& filename) 
     : QFile(filename) 
     , bytesSum(0) 
    { 
    }  

signals: 
    void progress(int value); 

protected: 
    qint64 readData(char* data, qint64 maxlen) 
    {  
     qint64 bytesReaded = QFile::readData(data, maxlen); 
     bytesSum += bytesReaded; 

     emit progress((int)(bytesSum/size()) * 100); 
     return bytesReaded; 
    } 

    private: 
     qint64 bytesSum; 
}; 
関連する問題