我正在尝试使用QT创建者为QgIS构建一个插件。该插件是不同表单的混合,支持生成绘图和报告。
使用某些表单,我希望能够使用Tab键在表单中导航。问题是我必须使用多个tab小部件,看起来ui只有一个全局tab order
列表?我想每个标签有一个单独的tab order
,它有意义吗?可能吗?
我在QT中激活了tab order
并打了一个打印屏幕,我知道如何改变顺序,但是如果我有其他100个项目的话,按照正确的顺序单击所有内容就会非常麻烦。
你基本上有2个选项。
第一个是从设计器GUI设置所有100多个选项卡。通过使用设计区域右侧所有小部件的概述,您可以在Tab-Mode中切换选项卡。请注意,在内部,它仅存储在选项卡焦点中的“哪个小部件跟随哪个”。设计师的编号只是为了使这种“链接”可见。然而,这种变体的一个大问题是,无论何时在UI中添加或删除某些内容,都必须重做整个过程。
因此,您应该可以使用第二个变体并在调用setupUi函数后在代码中执行Tab键。这是通过QWidget::setTabOrder
函数完成的。它告诉每个小部件,当它具有焦点并按下制表符时,下一个小节点要关注哪一个。一个简单的例子是:
MyClass::MyClass(QWidget *parent) :
QWidget{parent},
ui{new Ui::MyClass}
{
ui->setupUi(this);
QWidget::setTabOrder(ui->outerTabBar, ui->innerTabBar);
QWidget::setTabOrder(ui->comboBox1, ui->button1);
// ....
}