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)都无法实现在选择文件时触发信号。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bclshuai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值