Giant NG 2021-08-19 19:11 采纳率: 0%
浏览 425
已结题

QDialogButtonBox的信号触发

环境

ubuntu + Qt 4.7

问题描述

键盘按下Enter键时,会触发QDialogButtonBox的clicked信号;

详细

如下图,在设计师界面拖出两个控件,一个QLineEdit,一个QDialogButtonBox。此时可以注意到buttonBox上的确定按钮为橙色。

在cpp中加入代码:

关联buttonBox的clicked信号,在槽函数中进行打印。

#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    this->setFocusPolicy(Qt::NoFocus);
    ui->buttonBox->clearFocus();
    ui->buttonBox->setFocusPolicy(Qt::NoFocus);

    connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::buttonClicked(QAbstractButton *button)
{
    if(button == (QAbstractButton *)(ui->buttonBox->button(QDialogButtonBox::Ok)))
    {
        qDebug() << "(Button OK has been clicked.)";
    }
    else if(button == (QAbstractButton *)(ui->buttonBox->button(QDialogButtonBox::Cancel)))
    {
        qDebug() << "(Button Cancle has been clicked.)";
    }
}

实际测试发现:

1. 程勋运行时,QLineEdit的光标是闪烁的,此时可以直接输入数据;

2. 但是按下键盘Enter键时,出现了如下打印:

疑问

1. Enter键为什么会触发这种信号?

2. 有什么方法可以去掉QDialogButtonBox的默认聚焦的按钮吗?

  • 写回答

1条回答 默认 最新

  • Air Mind 2021-08-19 20:39
    关注

    1.因为QDialogButtonBox的ok按钮是默认按钮,因此具有焦点,enter以后就会触发响应操作。就好像点击一个电脑图标,单击enter键以后就会打开。
    2.
    设置焦点状态为无焦点即可。

    ui->buttonBox->setFocusPolicy(Qt::NoFocus);
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月8日
  • 创建了问题 8月19日

悬赏问题

  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题