我正在一个文本编辑器项目上,启动时,“查找”工具当前看起来像这样:

c++ - Qt:如何将光标焦点显示在“查找”对话框/工具中的某个字段上?-LMLPHP

我想知道如何更改应用程序/文本光标的焦点,以便在对对话框show(类型为QDialog)后自动进入“查找内容”字段中。

如您所见,当前,文本光标保留在文档中,因此用户必须手动单击“查找”工具才能开始搜索,这有点方便。我尝试弄乱对话框的setFocus方法,但这似乎无济于事。

最佳答案

要在QDialog中激活焦点,请执行以下操作:

void MainWindow::on_actionFind_triggered()
{
    if(findDialog->isHidden())
    {
        findDialog->show();
        findDialog->activateWindow();
        findDialog->raise();
        findDialog->setFocus();
    }
}

但是默认情况下,将重点关注的对象是QPushButton,因此要更改该行为,必须将其建立为QLineEdit的QDialog代理。
lineEdit = new QLineEdit();
setFocusProxy(lineEdit); // <---

09-04 08:59