c++ - 我怎样才能在qt中获得当前关注的QLineEdit?

标签 c++ qt focus qlineedit

我如何确定哪个 QLineEdit 在 qt 中具有当前焦点?

QLinEdit 设置焦点我试过:

   ui->linedit->setfocus();

但它也不适合我。我该如何解决这两个问题?

最佳答案

要识别哪个焦点小部件(QlineEdit 或任何 QWidget),您需要获取所有当前的小部件子项,将每个子项都转换为 QLineEdit,并检查哪个具有焦点,示例代码:

QList<QWidget*> mylineEdits = this->findChildren<QWidget*>();
QListIterator<QWidget*> it(mylineEdits); // iterate through the list of widgets
QWidget *lineEditField;
while (it.hasNext()) {
    lineEditField = it.next(); // take each widget in the list
    if(QLineEdit *lineE = qobject_cast<QLineEdit*>(lineEditField)) {  // check if iterated widget is of type QLineEdit
        //
        if (lineE->hasFocus())
          {
            // this has the focus ...   
          }

    }
}

第二期,关注QWidget,本期已经回答Post :

关于c++ - 我怎样才能在qt中获得当前关注的QLineEdit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702487/

相关文章:

css - 仅针对特定输入元素禁用 Wordpress 自动 <p> 标签

c++ - 通过引用传递数组并修改值 C++

c++ - 错误[Lp001]内存不足,但我不应该这样做

包含模板类的C++编译程序

c++ - 将自己的对象放入 QGraphicsScene

jQuery focus() 位于按钮单击 ipad 上的文本框上

c++ - 碰撞检测无法正常工作

c++ - 用户模板化定义结构的 QList

c++ - 为客户端知道服务器发送的包有多大的好处

macos - 保持 NSWindow 最前面