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.<tabname>.setEnabled(False)
,这似乎会禁用选项卡中的所有子小部件,但不会禁用选项卡按钮本身(!)
在 QtDesigner 中禁用选项卡按钮使其不可点击是不可能的,但在代码中是可能的(如上一个答案中所述):self._uiform.<tab frame>.setTabEnabled(<tab index>,False)
【讨论】:
以上是关于QTabWidget 方法在 QtDesigner 中不可用的主要内容,如果未能解决你的问题,请参考以下文章
动态创建选项卡 QTabWidget 并填充表格 QTableWidget
仅为 QTabWidget 中的选项卡显示工具提示,而不是整个小部件