天天看点

Qt Tab 切换焦点顺序

QLineEdit *lineEdit1 = new QLineEdit(this);
    QLineEdit *lineEdit2 = new QLineEdit(this);
    QLineEdit *lineEdit3 = new QLineEdit(this);
    QLineEdit *lineEdit4 = new QLineEdit(this);
    QLineEdit *lineEdit5 = new QLineEdit(this);

    lineEdit1->setText("1");
    lineEdit2->setText("2");
    lineEdit3->setText("3");
    lineEdit4->setText("4");
    lineEdit5->setText("5");

    lineEdit1->setFocus(); //程序运行起来,先让焦点在lineEdit1上

  //焦点顺序切换策略
    QWidget::setTabOrder(lineEdit1,lineEdit2); //1->2
    QWidget::setTabOrder(lineEdit2,lineEdit5); //2->5
    QWidget::setTabOrder(lineEdit5,lineEdit3); //5->3
    QWidget::setTabOrder(lineEdit3,lineEdit4); //3->4
    QWidget::setTabOrder(lineEdit4,lineEdit1); //4->1

 //通过布局来设置控件位置
    QHBoxLayout *hLayout = new QHBoxLayout();
    hLayout->addWidget(lineEdit1);
    hLayout->addWidget(lineEdit2);
    hLayout->addWidget(lineEdit3);
    hLayout->addWidget(lineEdit4);
    hLayout->addWidget(lineEdit5);

    setLayout(hLayout);
           

焦点的切换顺序如下

Qt Tab 切换焦点顺序

如果加一句 lineEdit3->setFocusPolicy(Qt::NoFocus); //lineEdit3无焦点

结果是,虽然为lineEdit3设置了焦点切换顺序 但是直接跳过了lineEdit3

Qt Tab 切换焦点顺序

继续阅读