QTabWidget 方法在 QtDesigner 中不可用

Posted

技术标签:

【中文标题】QTabWidget 方法在 QtDesigner 中不可用【英文标题】:QTabWidget methods not available in QtDesigner 【发布时间】:2014-05-19 11:27:20 【问题描述】:

QTabWidget 类中可用的方法之一是setTabEnabled - 我看不到在 QtDesigner 中设置它的方法(我知道我可以在代码中设置它) - 是否有具体原因这种方法(可能还有其他方法?)不能在 QtDesigner 中设置?

【问题讨论】:

只有属性在属性编辑器中可见。这目前不是财产。您可以提交功能请求here。 Read this 如果您想了解更多关于请求功能的信息。 【参考方案1】:

只需更改QTabWidget 内相应小部件的enabled 属性。


根据文档,这假设可以工作。我接受了look on QTabWidget code,看起来要么文档有误,要么代码中存在错误。我不会解释为什么只提供解决方法。

创建这个方法:

void tabBarWorkaround(QTabWidget *tabWidget) 
    for (int i=0; i<tabWidget->count(); ++i) 
        tabWidget->setTabEnabled(i, tabWidget->widget(i)->isEnabled());
    

并在施工时使用:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);

    tabBarWorkaround(ui->tabWidget);

从这一刻起,在设计器中更改页面的enabled 属性将按您的意愿工作。 我已经用 Qt 5.2.1 对此进行了测试,它可以工作。

【讨论】:

据我所知,“启用”复选框是针对父 QWidget不是每个单独的页面小部件;如果页面中有小部件,则它具有属性,但单个页面没有 @ChrisW 您可以在右侧的对象资源管理器中选择标签页 @ratchetfreak 我相信他不想禁用标签小部件,而是禁用标签栏中的标签。 @thuga 您是否阅读了 OP 中的链接文档? setTabEnabled 设置相关 tabWidgets 的 enabled 属性。 @ratchetfreak 它还禁用标签栏中的标签。 The page's tab is redrawn appropriately.。从属性编辑器禁用小部件不会这样做。【参考方案2】:

我意识到有两个不同的可能事件:

取消选中 QtDesigner 中选项卡小部件的“启用”复选框实际上会调用 self.&lt;tabname&gt;.setEnabled(False),这似乎会禁用选项卡中的所有子小部件,但不会禁用选项卡按钮本身(!)

在 QtDesigner 中禁用选项卡按钮使其不可点击是不可能的,但在代码中是可能的(如上一个答案中所述):self._uiform.&lt;tab frame&gt;.setTabEnabled(&lt;tab index&gt;,False)

【讨论】:

以上是关于QTabWidget 方法在 QtDesigner 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

动态创建选项卡 QTabWidget 并填充表格 QTableWidget

仅为 QTabWidget 中的选项卡显示工具提示,而不是整个小部件

将选项卡添加到 QTabWidget 时显示问题

将UI文件转换为Python后编写打开文件代码-QTabWidget [重复]

PyQt5 组件之QTabWidget

QTabWidget - 水平选项卡(当 TabPosition=West 时)