zoukankan      html  css  js  c++  java
  • QFileDialog不触发信号fileSelected、filesSelected等信号?

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

    https://www.cnblogs.com/bclshuai/p/11380657.html

    扫码关注公众号

    1.目标

    打开文件选择对话框之后,用鼠标选择图片文件,当图片文件的数量超过4张时给出提示,选择多了。


    2.实现步骤

    用QFileDialog的信号fileSelected、filesSelected来连接信号槽,实现文件数量选择的判断。

    (1)新建QFileDialog对象

    m_fileDialog = new QFileDialog(this);
        m_fileDialog->setFileMode(QFileDialog::ExistingFiles);
        m_fileDialog->setOption(QFileDialog::DontUseNativeDialog, true);//选择文件不触发信号,设置仍然无效
    (2)连接信号槽

    //尝试多种连接方式,都无法触发

     //connect(m_fileDialog, SIGNAL(filesSelected(const QStringList &files)), this, SLOT(SlotFileSelsect(const QStringList &files)));

        //connect(m_fileDialog, SIGNAL(filesSelected(const QStringList &)), this, SLOT(SlotFileSelsect(const QStringList &)));
        connect(m_fileDialog, &QFileDialog::filesSelected, this, &FaceMatch::SlotFileSelsect);

    (3)定义槽函数

    void FaceMatch::SlotFileSelsect(const QStringList &files)
    {
        //if (files.size()>4)
        {
            QMessageBox::information(NULL, "提示", "最多只能选四张图片", QMessageBox::Yes, QMessageBox::Yes);
        }
    }

    (4)打开文件夹选择文件

    void FaceMatch::SlotAddNewPic()
    {
        QStringList fileNameList = m_fileDialog->getOpenFileNames(this, tr("添加图片"), "D:/", tr("Images(*.png *jpeg *jpg *bmp *tif *.PNG *JPEG *JPG *BMP *TIF)"),NULL, QFileDialog::DontUseNativeDialog);
        if (fileNameList.size()>0)
        {
            QString strPath = "";
            QString strFileName = "";
            for (int i = 0; i<fileNameList.size(); i++)
            {
                strPath = fileNameList[i];
                if (!strPath.isEmpty())
                {
                    strFileName = QFileInfo(strPath).baseName();
                    AddPicToList(strPath);
                }

            }

        }
    }

    4.问题

    尝试了各种信号槽连接方式,尝试了getOpenFileNames设置QFileDialog::DontUseNativeDialog或者m_fileDialog->setOption(QFileDialog::DontUseNativeDialog, true)都无法实现在选择文件时触发信号。

    有大神解决,欢迎留言评论。

  • 相关阅读:
    【sqlite】python备份数据库
    【elasticsearch】python下的使用
    Raft
    SQL注入攻击和防御
    The world beyond batch: Streaming 101
    MillWheel: Fault-Tolerant Stream Processing at Internet Scale
    Flink DataSet API Programming Guide
    The Dataflow Model 论文
    让Storm插上CEP的翅膀
    Siddhi CEP Window机制
  • 原文地址:https://www.cnblogs.com/bclshuai/p/13739265.html
Copyright © 2011-2022 走看看