Qt连接信号和插槽

时间:2012-10-25 09:41:20

标签: qt4 signals slots disabled-control disabled-input

在我的Qt项目中,我有QPushButton个和QLineEdit个实例。我想在按下QPushButton时禁用QLineEdit。

我写了这段代码:

this->btn = new QPushButton(this);
this->txt = new QLineEdit(this);
QObject::connect(this->btn,SIGNAL(clicked(bool)),this->txt,SLOT(setDisabled(bool)));

哪个不起作用。 你能帮我吗?我的错是什么?

2 个答案:

答案 0 :(得分:5)

对于不可检查的按钮,clicked(bool)信号始终为false。它永远不会发出true,除非您设置setCheckable(true),在这种情况下,它会在您检查时发出true,并在您取消选中时发出false。无法检查不可检查的按钮(显然),这就是信号始终发出false的原因。

因此,在这种情况下,只需提供自己的插槽,即可在setDisabled(true)setDisabled(false)之间手动切换。或者首先使用setCheckable(true)使按钮可以检查(在这种情况下甚至可能更合适;只需测试并查看。)

答案 1 :(得分:0)

根据{{​​3}}

QLineEdit没有方法setDisabled

请尝试使用setReadOnly