只读QT表单

只读QT表单,qt,widget,readonly,Qt,Widget,Readonly,我希望使QT表单只读,但不禁用。我试图实现的是,用户仍然能够使用其上的控件,例如查看组合框中有哪些元素,或者滚动到列表框的末尾,但不应该能够更改这些组件的值。由于禁用的表单不允许任何交互,我在API中没有发现任何与表单只读相关的内容。我想知道有什么可能的解决方案来解决这个问题。唯一的方法是连接到相关QComboBox的currentIndexChanged信号,并防止它改变您想要的状态。如果这是你想做很多事情,你可以考虑子类QQuBOBOX;但是,在默认框架中,没有任何东西允许您这样做。我选择的

我希望使QT表单只读,但不禁用。我试图实现的是,用户仍然能够使用其上的控件,例如查看组合框中有哪些元素,或者滚动到列表框的末尾,但不应该能够更改这些组件的值。由于禁用的表单不允许任何交互,我在API中没有发现任何与表单只读相关的内容。我想知道有什么可能的解决方案来解决这个问题。

唯一的方法是连接到相关QComboBox的
currentIndexChanged
信号,并防止它改变您想要的状态。如果这是你想做很多事情,你可以考虑子类QQuBOBOX;但是,在默认框架中,没有任何东西允许您这样做。

我选择的方法是在我的表单类中有一个特殊的方法:

  • 使文本编辑为只读
  • 组合/检查/列表,其他控件被禁用
  • 允许导航的控件已启用

实际上,我计划对整个窗口执行此操作,而不仅仅是在其上显示组合框。。。但任何其他组件。也许我需要对很多组件进行子类化。感谢您的回复。组合框肯定是唯一的问题,因为大多数其他小部件(即LineEdit…)的“禁用”状态对于只读视图来说已经足够了。不,例如,您也不能更改TabWidget中的选项卡:(但是TabWidget不需要禁用,它不允许用户编辑任何内容。