2024.1.08 记录

发布时间:2024年01月08日

一.QTableWidget

    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、QFile、QFileInfo

    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;

?

三.QThread

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

四.QGraphicview

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 允许用户使用鼠标绘制一个矩形框(橡皮筋框)来选择多个图元。当用户按下鼠标左键并拖动时,会出现一个矩形框,框选范围内的图元将被选中。此模式适用于需要对多个图元进行批量操作或选择的场景。

}

文章来源:https://blog.csdn.net/Ricardo_XIAOHAO/article/details/135449730
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。