如何关闭QAbstractButton animateClick时,lineEdit有焦点
How to turn off QAbstractButton animateClick when lineEdit has focus
我是QT GUI编程的新手,我正在使用QT Creator。我看到的问题是当用户按下回车键时,我的按钮和行编辑。我的程序打开一个组框,允许用户输入密码,然后按确定或取消。
如果用户在行编辑有焦点时按enter键,程序似乎会为QAbstractButton animateClick();
发出第二个信号,所以当下一个组框打开并提示用户按ok或取消时,程序继续,就好像用户按ok按钮一样。
我设置了我的Push按钮,允许用户按tab键和回车键。为了获得此功能,我设置了okbutton-> setAutodefault(true);
和cancelButton-> setAutodefault(true);
我也有一个lineEdit供用户输入密码并按enter键。我通过将返回按下的信号连接到如下所示的ok按钮来设置它。
connect(lineEdit, SIGNAL(returnPressed()), okButton, SIGNAL(clicked()));
我也尝试将返回按下的信号直接连接到插槽,但问题仍然发生。
connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(chkPassword()));
如果用户用鼠标单击okButton或者我设置okButton-> setAutoDefault(false);
,程序将正常运行。我想知道是否有可能禁用了当行编辑有焦点时发生的animateClick信号。
如果有任何帮助,我将不胜感激
尝试永远不要将lineEdit
与okButton
连接,即注释掉代码中的这一行:
connect(lineEdit, SIGNAL(returnPressed()), okButton, SIGNAL(clicked()));
并检查程序是否按照您的要求运行。
同样,你可能想调用
okButton->setDefault(true);
除了你的setAutoDefault()
调用两个按钮,这取决于你到底想要发生什么,当用户按下输入与各种事物的焦点。有关此主题的更多信息,请参阅此回答。
我假设,因为您从未提及它,您没有为任何按钮调用setDefault()
。因此,okButton
是将autoDefault
属性设置为true
的第一个按钮。这意味着okButton
成为对话框的"选择按钮",每当对话框必须处理输入按键,没有发生在其他autoDefault
按钮(如cancelButton
在你的情况下)。
每次对话框中的任何小部件收到输入键并且不消耗事件本身时,事件最终由对话框的默认按钮处理逻辑处理,这导致单击前面提到的"选择按钮"。
QLineEdit
不用于多行编辑,因此它可能只是不消耗输入的按键事件(同时仍在处理它,因为它发出returnPressed()
信号)。因此,returnPressed()
的连接最终会做它正在做的任何事情,并且,另外,默认按钮逻辑最终会第二次单击您的按钮。
还可以查看Qt项目论坛上的这个线程,它似乎以不同的方式解决了同样的问题。
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- MFC:如何设置CEdit框的焦点?
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 如何在 wxWidgets 中从 wxTextCtrl 中删除焦点
- 每次qt窗口获得焦点时调用函数
- Qt如何在QRect上设置焦点
- 在树状视图中双击后焦点丢失
- FLTK:窗口在 MacOS 上获得焦点时的事件
- 禁用对透视的焦点
- 当焦点丢失时,全屏GLFW窗口消失了
- 当在QTableView上丢失焦点时,失去背景颜色
- 即使另一个应用具有焦点,检测F1密钥的按键(和覆盖)键
- 当我的程序不在焦点中时,不拾取 GetAsyncKeyState. 在游戏中不工作
- 如何释放QPushButton的焦点,这是QDialog的默认按钮
- 为什么我的Qt小部件的焦点被改变了?
- Windows在OpenGL中更改焦点时会闪烁
- Qcombobox :: ShowPopup()从其Qlineedit中窃取了焦点
- 执行QACTION之后如何设置焦点
- 如何在屏幕外窗口中渲染焦点指示器?
- 如何关闭QAbstractButton animateClick时,lineEdit有焦点