Qt PushButton 点一下 触发两边槽函数的问题

先看代码

cpp 复制代码
SdBatchTool::SdBatchTool(QWidget *parent) : QMainWindow(parent) {
  ui.setupUi(this);
  init_ui();
  print_log("工具启动......");
}

SdBatchTool::~SdBatchTool() {}

void SdBatchTool::init_ui() {
  //connect(ui.btn_identy, &QPushButton::clicked, this,
  //        &SdBatchTool::on_btn_identy_clicked);
  //connect(ui.btn_select_p8b, &QPushButton::clicked, this,
  //        &SdBatchTool::on_btn_select_p8b_clicked);
  //connect(ui.btn_export, &QPushButton::clicked, this,
  //        &SdBatchTool::on_btn_export_clicked);

  connect(this, &SdBatchTool::print_log, this, &SdBatchTool::on_print_log);
}

void SdBatchTool::on_btn_identy_clicked() {}

void SdBatchTool::on_btn_select_p8b_clicked() {
  p8b_path = QFileDialog::getExistingDirectory(
      this, "选择指纹文件导出文件夹", QString(),
      QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

  if (!p8b_path.isEmpty()) {
    ui.le_p8b_path->setText(p8b_path);
  }
}

我在界面上加了一个QPushButton,ID是btn_identy,槽函数为void on_btn_identy_clicked();

我手动加了connect函数。加完后运行,发现点击QPushButton一下,会触发两遍槽函数。

后来我把connect注释掉,发现QPushButton的槽函数还是会被触发,但是只触发一遍,正常了。

这时我才发现,原来Qt中 如果槽函数命名为on_<QPushButton ID>_clicked,那么就可以免写connect,默认就已经连接了。

所以我手动写了一遍connect,反而重复连接,所以才会触发两遍。

相关推荐
dialect_7 小时前
KMP算法
开发语言·c++·算法
总要学点什么7 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
听风吹等浪起8 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
ShineWinsu9 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
开开心心_Every9 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c9 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
吴卫斌9 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
超级架构师10 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮11 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔12 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节