diff --git a/Gui/Control/FileControl.cpp b/Gui/Control/FileControl.cpp index 6b9d54f..d3acc68 100644 --- a/Gui/Control/FileControl.cpp +++ b/Gui/Control/FileControl.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -107,6 +108,7 @@ void FileManager::InitControl() auto* line = ui->comboBox->lineEdit(); connect(line, &QLineEdit::returnPressed, this, [this]() { ui->btnVisit->click(); }); + connect(ui->tableWidget->verticalScrollBar(), &QScrollBar::actionTriggered, this, [this]() { userScrol_ = true; }); } void FileManager::InitMenu() @@ -239,9 +241,13 @@ void FileManager::SortFileInfo(SortMethod method) void FileManager::RefreshTab() { + userScrol_ = false; + ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); - ui->tableWidget->setRowCount(currentShowInfo_.vec.size()); + for (int i = 0; i < currentShowInfo_.vec.size(); ++i) { + + ui->tableWidget->insertRow(ui->tableWidget->rowCount()); const DirFileInfo& fileInfo = currentShowInfo_.vec[i]; // *********************************************************************************** @@ -306,8 +312,15 @@ void FileManager::RefreshTab() } item->setFlags(item->flags() & ~Qt::ItemIsEditable); ui->tableWidget->setItem(i, 4, item); + + if (i % 10 == 0) { + QGuiApplication::processEvents(); + } + } + + if (!userScrol_) { + ui->tableWidget->scrollToTop(); } - ui->tableWidget->scrollToTop(); } void FileManager::HeaderClicked(int column) diff --git a/Gui/Control/FileControl.h b/Gui/Control/FileControl.h index 4710359..010d921 100644 --- a/Gui/Control/FileControl.h +++ b/Gui/Control/FileControl.h @@ -78,6 +78,7 @@ private: ClientCore* cliCore_; QMutex cbMut_; QMutex tbMut_; + bool userScrol_{}; QVector drivers_; QSet fileTypes_; QSet curSelectTypes_; diff --git a/Note/version.md b/Note/version.md index f9ed626..85f03e7 100644 --- a/Note/version.md +++ b/Note/version.md @@ -8,6 +8,7 @@ | 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 | | :--: | :--: | ------------------------------------------------------------ | :----: | :------: | :------: | +| 42 | 优化 | 访问文件过多时,界面有卡顿情况。 | | 0.2.3 | 0.2.4 | | 41 | 问题 | 主动中断检查等待后,软件崩溃。 | | 0.2.3 | 0.2.4 | | 40 | 问题 | 上传方完成后,接收端未接收完毕不能退出的问题。 | | 0.2.3 | 0.2.4 | | 39 | 优化 | Console端断联后应当自动退出。 | | 0.2.3 | 0.2.4 |