Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ProgressBar读取文件的qt连接_Qt_File_Progress Bar - Fatal编程技术网

使用ProgressBar读取文件的qt连接

使用ProgressBar读取文件的qt连接,qt,file,progress-bar,Qt,File,Progress Bar,如何将文件写入进度条 我试过这个版本: 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, &QProgressB

如何将文件写入进度条

我试过这个版本:

    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);
这个版本:

    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);
上述两个版本不起作用 第二个给出了一个错误,
指向的类型是不相关的;转换需要重新解释转换、C样式转换或函数样式转换
-
插槽需要的参数比信号提供的参数多。
-
信号和插槽参数不兼容。

如何将文件读取链接到进度条,以便在内存中查看上载的文件进度

  • 我知道我使用的功能不是信号,我要问的是如何生成适当的信号/我应该使用哪种替代方法将适当的信号连接到进度条

    • 我想你可以试试这个:

      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;
      };