2017-09-24 63 views
-1

如何將文件寫入進度條?qt用ProgressBar連接文件讀取

我想這個版本:

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

這個版本:

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和第一給 - The slot requires more arguments than the signal provides. - 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; 
};