fix:处理文件过多时的卡顿的情况。

This commit is contained in:
2025-11-16 16:43:40 +08:00
parent 08609905c5
commit 466b012b4f
3 changed files with 17 additions and 2 deletions

View File

@@ -10,6 +10,7 @@
#include <QLineEdit>
#include <QListWidget>
#include <QMessageBox>
#include <QScrollBar>
#include <QTableWidgetItem>
#include <RemoteFile.h>
@@ -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();
}
}
void FileManager::HeaderClicked(int column)

View File

@@ -78,6 +78,7 @@ private:
ClientCore* cliCore_;
QMutex cbMut_;
QMutex tbMut_;
bool userScrol_{};
QVector<QString> drivers_;
QSet<QString> fileTypes_;
QSet<QString> curSelectTypes_;

View File

@@ -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 |