Qt中实时禁用小部件

3

我有两个单选按钮,点击其中一个应该禁用一些小部件并激活其他一些小部件。我该怎么做呢?

例如,如果我选中radioButton1,它会立即禁用一个lineEdit,如果我选择radioButton2,它将启用第一个lineEdit并禁用lineEdit2。

所有这些都是实时的。


3
你目前为止尝试了什么?(如果可以的话,请展示你的代码)你卡住了什么?以目前这种形式,这实际上不是一个好问题。 - Bart
我建议阅读Qt的入门文档,并使用具有代码完成和内置帮助的creator。祝你好运! - Klathzazt
1个回答

6

目前没有太多可供参考的信息,一般的解决办法如下:

处理单选按钮的适当信号。使用该信号可以触发一个方法/循环,在其中使用setEnabled(false)将您的小部件设置为禁用。

根据您的情况,您可以类似以下两种方法,具体取决于您接收到的信号:

void OnRadioButton1()
{
    lineEdit->setEnabled(false);
    lineEdit2->setEnabled(true);
}

void OnRadioButton2()
{
    lineEdit->setEnabled(true);
    lineEdit2->setEnabled(false);
}

这其实很简单。我不明白为什么会有“实时”的概念。它只是对一个单一的输入“事件”做出单一的响应。

当然,这也可以是一个带有特定(布尔)参数的单一方法或其他形式。但考虑到我们正在讨论一个假设的示例情况,它并不一定反映您的真实代码,但至少可以提供一些想法。


谢谢您的回答,我曾考虑创建一个无限循环,但这会消耗大量的CPU资源,这是不利的。还有其他方法吗? 其次,我尝试使用setEnabled(false)来禁用组合框,但我得到了这个错误:error: no matching function for call to 'QComboBox::isEnabled(bool),LineEdit小部件也是如此。我做错了什么? - Varun Chitre
我说了 setEnabled(false)。你的错误提示是 isEnabled(bool)。这个函数确实存在,但是没有布尔参数,并且仅指示某物是否启用。它不会将其设置为启用。所以你可能需要更正一下。为什么会有无限循环?我完全看不出来。你可能需要向我们展示你的代码。请更新你的问题。 - Bart
谢谢您的纠正。但实际上我不能分享代码,因为它有大约1200行cpp,许多资源和表单。我正在为Android手机开发一个工具包。您能否建议我如何实现它?以便它可以实时处理小部件? - Varun Chitre
2
根据你提供的信息,我已经尽力给出了建议。如果你不能将问题简化为一个简单的例子(不要超过1200行代码),那么我也无能为力了。 - Bart
抱歉,我更新了我的帖子并提供了更多细节,但由于某些原因我不能分享代码 :(. 你能否给我一个示例代码来解决我的问题? - Varun Chitre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接