如何使用 TAB 键聚焦两个 qpushbutton 之一

Lit*_*nts 1 qt qpushbutton

在一个小部件中,我放了两个 QPushButton(让我们说左边的“OK”和右边的“EXIT”)。当我使用鼠标按下它们时,它们会定期工作。假设我想使用 TAB 键从一个切换到另一个:这可能吗?怎么能做到这一点?

Rei*_*ica 5

在某些平台上,按钮之间的键盘焦点导航是默认行为,但在某些平台上则不是。

如果您希望在所有平台上进行键盘导航,则按钮上应Qt::StrongFocus设置策略。请注意,用于触发按钮的快捷方式也是特定于平台的。例如在 OS X 上你会使用Space.

#include <QtWidgets>

int main(int argc, char ** argv) {
   QApplication app{argc, argv};
   QWidget w;
   QVBoxLayout layout{&w};
   // Individual Buttons
   QPushButton p1{"button1"}, p2{"button2"};
   for (auto p : {&p1, &p2}) {
      layout.addWidget(p);
      p->setFocusPolicy(Qt::StrongFocus);
   }
   // A button box
   QDialogButtonBox box;
   for (auto text : {"button3", "button4"})
      box.addButton(text, QDialogButtonBox::NoRole)->setFocusPolicy(Qt::StrongFocus);
   layout.addWidget(&box);

   w.show();
   return app.exec();
}
Run Code Online (Sandbox Code Playgroud)