我是新来的脱GUI编程和我使用夸脱的创造者。这问题我看到的是我的按钮和行编辑当户按下输入键。我的程序中打开一个组框并允许用户输入密码并按确定或取消。

如果用户按下输入键时行编辑有焦点,程序似乎发出的第二个信号QAbstractButton animateClick(); 因此,当下一组的框并提示用户按确定或取消,该程序继续因为如果用户按"确定"的按钮。

我设定了我的按钮以允许用户按tab键和打进入关键。为了获得这种功能性,我设置okbutton->setAutodefault(true); 和cancelButton->setAutodefault(true);

我也有一个lineEdit供用户输入密码并按进入。我设置此通过连接的返回压信号,以"确定"的按钮以下所示。

connect(lineEdit, SIGNAL(returnPressed()), okButton, SIGNAL(clicked()));

我还试图连接的返回压的信号直接对隙,但仍然出现问题。

connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(chkPassword()));

如果用户击okButton用鼠标或我设置okButton->setAutoDefault(false); 该程序的功能,因为它应该。我想知道如果这是可能的禁用animateClick信号,发生在线编辑有重点。

任何帮助,这将是极大的赞赏。

有帮助吗?

解决方案

尝试从来没有连接 lineEditokButton, 即评论了这条线在你的代码:

connect(lineEdit, SIGNAL(returnPressed()), okButton, SIGNAL(clicked()));

和检查程序的行为作为你想要它。


此外,您可能想要呼叫

okButton->setDefault(true);

除了你的 setAutoDefault() 呼吁这两个按钮,取决于究竟是什么,你想要发生当按压 输入 有各种各样的事情的焦点。看看 这个答案 欲了解更多有关这一主题。


我假设,因为你从来没有提到它,你不要叫 setDefault() 对于任何按钮。因此, okButton 是你的第一个按钮 autoDefault 财产设定为 true.这意味着 okButton 变成对话的"按钮的选择",只要该对话已经到处理 输入 按键就没有发生一些其他的 autoDefault 按钮(例如 cancelButton 在你的情况)。

每次的任何部件在您的对话收到一个 输入 按键和不消耗这一事件本身,事件结束,正在处理的对话的默认键的处理逻辑,这导致击上述"按钮的选择"。

QLineEdit 不用于多线编辑,所以这可能只是不会消耗的关键的新闻事件 输入 (虽然仍然处理它,它会发送出局的 returnPressed() 信号)。因此,连接的 returnPressed() 结束了做不管它是什么做的, 另外, 默认键的逻辑终点击按钮第二次。

还检查了 这纹在建项目的论坛 这似乎在解决同样的问题不同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top