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)都无法实现在选择文件时触发信号。
有大神解决,欢迎留言评论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix