#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "core.h"
#include "copymovefiledialog.h"
#include "resultlistitem.h"
#include <QApplication>
#include <QDateTime>
#include <QDebug>
#include <QRect>
#include <QThread>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>
#include <QFileIconProvider>
#include <QFileInfo>
#include <QUrl>
#include <QDesktopServices>
#include <QClipboard>
#include <QMimeData>
#include <QFileDialog>
#include <QStandardPaths>
#include <QMessageBox>
#include <QDir>
#include <QtNetwork>
#include <QSize>
const char checkUpdateUrl[] = "https://gitee.com/brok1n/bsearch/raw/master/Api/checkUpdate.json";
const char checkUpdateBakUrl[] = "https://raw.githubusercontent.com/brok1n/bsearch/master/Api/checkUpdate.json";
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, mWaitResultTimer(new QTimer())
, mWaitScanDiskTimer(new QTimer())
, mTimeTimer(new QTimer())
, mAboutDialog(nullptr)
, reply(nullptr)
, mContextMenu(nullptr)
, mStatusMsgLabel(nullptr)
, mStatusTimeLabel(nullptr)
{
this->ui->setupUi(this);
mDefaultIconSize = this->ui->listWidget->iconSize();
// this->ui->listWidget->setIconSize(QSize(24, 24));
connect(this->ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onListWidgetItemClicked(QListWidgetItem*)));
// ------ 新建窗口 ------
//如果窗口数量 > 0
int controlPanelCount = Core::GetInstance()->controlPanelCount();
if(controlPanelCount > 0)
{
//获取可用桌面大小
QScreen *screen = QGuiApplication::screenAt(this->pos());
QRect deskRect = screen->availableGeometry();
this->setGeometry(deskRect.width() / 2 - width() / 2 + controlPanelCount * 30, deskRect.height() / 2 - height() / 2 + controlPanelCount * 30, width(), height());
//多窗口时,让子窗口被关闭后自动释放
setAttribute(Qt::WA_DeleteOnClose);
}
mPanelId = QDateTime::currentDateTime().toMSecsSinceEpoch();
if(!Core::GetInstance()->addControlPanel(mPanelId))
{
QThread::msleep(10);
mPanelId = QDateTime::currentDateTime().toMSecsSinceEpoch();
Core::GetInstance()->addControlPanel(mPanelId);
}
// ------ 新建窗口 ------
connect(mWaitScanDiskTimer, SIGNAL(timeout()), this, SLOT(onScanDiskFinished()));
mWaitScanDiskTimer->start(1000);
showMsg("正在扫描磁盘...");
// this->ui->statusbar->showMessage("正在扫描磁盘...");
QString desktopFileName = QApplication::desktopFileName();
qDebug() << "desktopFileName:" << desktopFileName;
QString applicationDisplayName = QApplication::applicationDisplayName();
qDebug() << "applicationDisplayName:" << applicationDisplayName;
QString platformName = QApplication::platformName();
qDebug() << "platformName:" << platformName;
switch (DataCenter::GetInstance()->sortType()) {
case SORT_TYPE::BY_NAME:
this->ui->actionSortName->setChecked(true);
break;
case SORT_TYPE::BY_SIZE:
this->ui->actionSortSize->setChecked(true);
break;
case SORT_TYPE::BY_PATH:
this->ui->actionSortPath->setChecked(true);
break;
case SORT_TYPE::BY_TYPE:
this->ui->actionSortType->setChecked(true);
break;
case SORT_TYPE::BY_EXT:
this->ui->actionSortExt->setChecked(true);
break;
case SORT_TYPE::BY_CTIME:
this->ui->actionSortCreateTime->setChecked(true);
break;
case SORT_TYPE::BY_MTIME:
this->ui->actionSortModifyTime->setChecked(true);
break;
}
switch (DataCenter::GetInstance()->sortOrder()) {
case SORT_ORDER::SORT_ASC:
this->ui->actionSortAsc->setChecked(true);
break;
case SORT_ORDER::SORT_DESC:
this->ui->actionSortDesc->setChecked(true);
break;
}
// ------ 版本更新相关 ------
//#ifndef QT_NO_SSL
connect(&qnam, &QNetworkAccessManager::sslErrors,
this, &MainWindow::sslErrors);
//#endif
// ------ 版本更新相关 ------
// ------ 右键菜单 ------
mContextMenu = new QMenu( this );
QAction *openAction = new QAction(tr("打开文件"), this);
QAction *openFolder = new QAction(tr("打开所在目录"), this);
QAction *copyToDesktop = new QAction(tr("复制到桌面"), this);
QAction *copyToFolder = new QAction(tr("复制到..."), this);
QAction *moveToFolder = new QAction(tr("移动到..."), this);
mContextMenu->addAction( openAction );
mContextMenu->addAction( openFolder );
mContextMenu->addSeparator();
mContextMenu->addAction( copyToDesktop );
mContextMenu->addAction( copyToFolder );
mContextMenu->addAction( moveToFolder );
connect( openAction, SIGNAL(triggered() ), this, SLOT( on_actionOpenFile_triggered()) );
connect( openFolder, SIGNAL(triggered() ), this, SLOT( on_actionOpenInFolder_triggered()) );
connect( copyToDesktop, SIGNAL(triggered() ), this, SLOT( on_actionCopyToDesktop_triggered()) );
connect( copyToFolder, SIGNAL(triggered() ), this, SLOT( on_actionCopyTo_triggered()) );
connect( moveToFolder, SIGNAL(triggered() ), this, SLOT( on_actionMoveTo_triggered()) );
// ------ 右键菜单 ------
// ------ 状态栏 ------
// ---- 消息 ----
mStatusMsgLabel = new QLabel;
mStatusMsgLabel->setAlignment(Qt::AlignCenter);
mStatusMsgLabel->setMinimumSize(mStatusMsgLabel->sizeHint());
ui->statusbar->addWidget(mStatusMsgLabel, 1);
// ---- 消息 ----
// ---- 文件数 ----
mStatusFileCountLabel = new QLabel;
mStatusFileCountLabel->setAlignment(Qt::AlignCenter);
mStatusFileCountLabel->setMinimumSize(mStatusFileCountLabel->sizeHint());
ui->statusbar->addWidget(mStatusFileCountLabel);
// ---- 文件数 ----
// ---- 时间 ----
mStatusTimeLabel = new QLabel;
mStatusTimeLabel->setAlignment(Qt::AlignCenter);
mStatusTimeLabel->setMinimumSize(mStatusTimeLabel->sizeHint());
ui->statusbar->addWidget(mStatusTimeLabel);
connect(mTimeTimer, SIGNAL(timeout()), this, SLOT(timeUpdate()));
mTimeTimer->start(1000);
timeUpdate();
// ---- 时间 ----
// ------ 状态栏 ------
// mContextMenu->exec( QCursor::pos() );
}
MainWindow::~MainWindow()
{
qDebug() << "窗口析构函数:" << mPanelId;
mAboutDialog->deleteLater();
Core::GetInstance()->releaseControlPanel(mPanelId);
mWaitResultTimer->stop();
delete mWaitResultTimer;
mWaitScanDiskTimer->stop();
delete mWaitScanDiskTimer;
delete ui;
qDebug() << "窗口析构函数:" << mPanelId << ":end.";
}
void MainWindow::on_keyEdit_returnPressed()
{
startSearch();
}
void MainWindow::onSearchFinished()
{
if(DataCenter::GetInstance()->isSearchFinished())
{
disconnect(mWaitResultTimer, SIGNAL(timeout()), this, SLOT(onSearchFinished()));
mWaitResultTimer->stop();
flushResult();
qDebug() << "搜索完毕!";
}
}
void MainWindow::onScanDiskFinished()
{
if(DataCenter::GetInstance()->isScanDiskFinished())
{
disconnect(mWaitScanDiskTimer, SIGNAL(timeout()), this, SLOT(onScanDiskFinished()));
mWaitScanDiskTimer->stop();
showMsg("磁盘扫描完毕!");
mStatusFileCountLabel->setText(QString("文件数:%1 文件夹数:%1").arg(DataCenter::GetInstance()->fileCount()).arg(DataCenter::GetInstance()->dirCount()));
// this->ui->statusbar->showMessage("磁盘扫描完毕!");
}
}
void MainWindow::onListWidgetItemClicked(QListWidgetItem *item)
{
QString txt = item->text();
QString fullPath = item->data(Qt::UserRole).toString();
qDebug() << "点击了:" << txt << " fullPath:" << fullPath;
}
void MainWindow::flushResult()
{
QList<Node*> *resultList = DataCenter::GetInstance()->resultList();
QElapsedTimer flushTimer;
flushTimer.start();
th
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于C++&Qt开发的文件搜索及文本内容搜索软件,支持Windows、Linux、Mac系统.zip 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码 毕业设计 课程设计 项目开发 系统开发 QT 数据库 源代码
资源推荐
资源详情
资源评论
收起资源包目录
基于C++&Qt开发的文件搜索及文本内容搜索软件,支持Windows、Linux、Mac系统.zip (60个子文件)
project_code_0710
Core
pathindexrunnable.cpp 3KB
partitionindexthread.h 472B
common.cpp 1KB
datacenter.h 2KB
searchthread.cpp 2KB
Core_zh_CN.ts 99B
indexthread.h 403B
searchmanager.cpp 7KB
datacenter.cpp 3KB
indexmanager.cpp 994B
core.cpp 3KB
preferences.cpp 91B
indexthread.cpp 3KB
searchmanager.h 429B
common.h 9KB
preferences.h 215B
searchthread.h 518B
partitionindexthread.cpp 6KB
Core.pri 667B
.gitignore 741B
indexmanager.h 511B
core.h 1KB
pathindexrunnable.h 600B
Core.pro 512B
Core_global.h 210B
Api
checkUpdate.json 229B
checkUpdate.json.md 875B
Ui
bsearch_icon_256.ico 4KB
bsearch_icon_256.png 20KB
bsearch_icon.png 19KB
bsearch_icon.psd 717KB
Gui
mainwindow.h 3KB
copymovefiledialog.h 2KB
Gui.pro 1KB
resultlistitem.cpp 693B
bsearch_icon_256.png 20KB
copymovefiledialog.ui 12KB
aboutdialog.ui 4KB
mainwindow.cpp 28KB
resultlistitem.ui 1KB
bsearch.ico 4KB
ccrashstack.h 542B
main.cpp 1KB
mainwindow.ui 12KB
ok.png 538B
aboutdialog.h 345B
Gui_zh_CN.ts 98B
diff.png 223B
back.png 604B
.gitignore 741B
res.qrc 223B
aboutdialog.cpp 372B
ccrashstack.cpp 7KB
copymovefiledialog.cpp 7KB
resultlistitem.h 365B
Console
Console.pro.user 24KB
Console.pro 546B
main.cpp 124B
Console_zh_CN.ts 102B
.gitignore 8B
共 60 条
- 1
资源评论
辣椒种子
- 粉丝: 3411
- 资源: 5725
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 谷歌浏览器自动化测试版113.0.5672.0(包含linux,windows32/64,mac三个版本,不会自动更新)
- uniapp中tab切换,底部内容跟着移动,相反,底部移动,tab也跟着切换-组件
- 基于JS+TS实现跨平台3D相机控制器-附项目源码-优质项目分享.zip
- 跨相机-基于Rust实现的跨平台相机捕获-附项目源码-优质项目分享.zip
- odise 14离线安装包 大众斯柯达奥迪 5054 6153
- 网页设计期末作业-纯html加css+少量js-盗墓笔记旅游导航网站.rar
- 算法笔记模拟退火.rar
- MATLAB大数据仿真案例-蚁群算法(ACO)用于求解旅行商(TSP)问题.rar
- 基于yolov5的吸烟行为检测源码+模型.zip
- MySQL基础知识-个人笔记.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功