route_select_table= parent->findChild<QTableWidget*>("route_selectMap_tableWidget");
route_select_table->setShowGrid(false); //设置格子线
route_select_table->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
route_select_table->setEditTriggers(QAbstractItemView::NoEditTriggers); //禁止编辑
route_select_table->horizontalHeader()->setStretchLastSection(true); //行头自适应表格
route_select_table->horizontalHeader()->setFont(QFont("微软雅黑", 14));
QHeaderView *header_route_v = route_select_table->verticalHeader();//横向表头
QHeaderView *header_route_h = route_select_table->horizontalHeader();//竖向表头
header_route_v->setHidden(true); //隐藏横向表头
header_route_h->show();//显示竖向表头
route_select_table->setRowCount(0);
route_select_table->horizontalHeader()->setDefaultSectionSize(50); //设置默认宽度
route_select_table->verticalHeader()->setDefaultSectionSize(50); //设置一行默认高度
route_select_table->setColumnWidth(0,150);
route_select_table->setColumnWidth(1,350);
route_select_table->setColumnWidth(2,450);
connect(route_select_table,&QTableWidget::itemDoubleClicked,[=](QTableWidgetItem *item){
});//双击信号槽
connect(route_select_table,&QTableWidget::itemClicked,[=](QTableWidgetItem *item){
});//单击
route_select_table->insertRow(route_select_table->rowCount());//插入新的一行
QTableWidgetItem* item1=new QTableWidgetItem(QString::number(route_select_table->rowCount()));
item1->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); // 将项的文本居中对齐
route_select_table->setItem(route_select_table->rowCount()-1,0,item1);
?
QDir dir(file_path+"/"+file_name+"/path/");
if(!dir.exists())
{
dir.mkdir(file_path+"/"+file_name+"/path/");
return;
}
QStringList filter;
QFileInfoList fileInfoList=dir.entryInfoList(filter);
for (const QFileInfo& fileInfo : fileInfoList) {
QString fileName = fileInfo.baseName();
if(fileName.size()==0) continue;
setRouteTableData(file_name,fileName);
}
QDir directory(value);
QStringList files2;
std::map<QString,QFileInfo> files;
// 设置过滤器,获取所有文件和目录
directory.setFilter(QDir::Files | QDir::Dirs | QDir::NoSymLinks |
QDir::NoDotAndDotDot|QDir::Hidden);
QDir::Files:表示只显示普通文件,即不包括目录和链接文件。
QDir::Dirs:表示只显示子目录,即不包括普通文件和链接文件。
QDir::NoSymLinks:表示不包括符号链接文件。
QDir::NoDotAndDotDot:表示不包括当前目录(.) 和父级目录(..)。
QDir::Hidden:表示包括隐藏文件和目录。
local_directory_name_list.clear();
// 获取目录下的所有文件和目录
QFileInfoList fileInfoList = directory.entryInfoList();
// 遍历文件信息列表,获取文件和目录路径
foreach (const QFileInfo& fileInfo, fileInfoList)
{
if (fileInfo.isDir())
{
// 如果是目录,递归调用该函数获取目录下的所有文件和目录
// QStringList subFiles = getAllFilesInPath(fileInfo.filePath());
// files.append(subFiles);
local_directory_name_list.push_back(fileInfo.fileName());
files[fileInfo.fileName()]=fileInfo;
}
else
{
// 如果是文件,将其路径添加到列表中
// //qDebug()<< fileInfo.fileName() << fileInfo;
// files.append(fileInfo.filePath());
files[fileInfo.fileName()]=fileInfo;
}
}
return files;
?
int FileTransferThread::setThreadNum(int value)
{
for(int i=0;i<value;i++)
{
FileThread* fileThread = new FileThread(sftp_list.at(i),session_list.at(i));
thread_list.push_back(fileThread);//线程加入数组管理
//连接信号
QObject::connect(fileThread,&FileThread::getTransmitFileInfo,this,
&FileTransferThread::setTransmitFileInfoSignals);
}
return 0;
}
void run() override {
if(file_status)//根据信号量判断上传还是下载
{
download_file(file_data.begin()->first.c_str(),
file_data.begin()->second.c_str(),sftp_session_);
}
else
{
upload_file(file_data.begin()->first.c_str(),file_data.begin()->second.c_str(),
sftp_session_);
}
// 下载完成后发出信号,通知主线程
emit fileFinished();
}
public slots:
void MousePressEvent(QMouseEvent *event)
{
// qDebug()<<"按压!";
QPointF point = mapToScene(event->pos());
QGraphicsItem *item = scene_->itemAt(point, QTransform()); // 获取点击的图形项
}
GraphicsView::GraphicsView(QGraphicsScene *scene,QWidget *parent ) :
QGraphicsView(parent),scene_(scene)
{
setScene(scene_);
setRenderHint(QPainter::Antialiasing);//开启抗锯齿
setDragMode(QGraphicsView::RubberBandDrag);//设置拖拽模式
//NoDrag:该模式下,QGraphicsView 不允许拖拽操作。用户无法通过鼠标拖动视图中的图元或滚动视图内容。
//ScrollHandDrag:该模式下,QGraphicsView 允许通过鼠标拖动来滚动视图的内容。当用户按下鼠标左键并拖动时,视图内容会随着鼠标移动而滚动。这种模式常用于查看大型场景或画布,以及在其中导航和浏览。
//RubberBandDrag:该模式下,QGraphicsView 允许用户使用鼠标绘制一个矩形框(橡皮筋框)来选择多个图元。当用户按下鼠标左键并拖动时,会出现一个矩形框,框选范围内的图元将被选中。此模式适用于需要对多个图元进行批量操作或选择的场景。
}