天天看點

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 切換焦點順序

繼續閱讀