处理具有多层选项卡小部件的窗口小部件中的选项卡顺序

问题描述 投票:1回答:1

我正在尝试使用QT创建者为QgIS构建一个插件。该插件是不同表单的混合,支持生成绘图和报告。

使用某些表单,我希望能够使用Tab键在表单中导航。问题是我必须使用多个tab小部件,看起来ui只有一个全局tab order列表?我想每个标签有一个单独的tab order,它有意义吗?可能吗?

我在QT中激活了tab order并打了一个打印屏幕,我知道如何改变顺序,但是如果我有其他100个项目的话,按照正确的顺序单击所有内容就会非常麻烦。

Tabs in tabs

qt tabs
1个回答
0
投票

你基本上有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);
    // ....
}
© www.soinside.com 2019 - 2024. All rights reserved.