Qt连接信号和插槽
问题描述:
在我的Qt项目中,我有QPushButton
和QLineEdit
实例。我想在按下QPushButton时将QLineEdit设置为禁用状态。Qt连接信号和插槽
我写这段代码:
this->btn = new QPushButton(this);
this->txt = new QLineEdit(this);
QObject::connect(this->btn,SIGNAL(clicked(bool)),this->txt,SLOT(setDisabled(bool)));
不工作。 你能帮我吗?我的错误是什么?
答
clicked(bool)
信号始终为false
,用于非可选按钮。除非您设置setCheckable(true)
,否则它绝不会发出true
,在这种情况下,您在检查时会发出true
,而在您取消选中时发出false
。不可检查的按钮不能被检查(显然),这就是为什么信号始终发出false
。
因此,在这种情况下,只需提供您自己的插槽,您可以在setDisabled(true)
和setDisabled(false)
之间手动切换。或者先用setCheckable(true)
(这可能更适合在这种情况下,可以更适合这个按钮进行检查;只是测试它并查看。)
该文档说明它具有'19个从QWidget继承的公共槽'和'void \t setDisabled布尔禁用)'特别是。 – Kolyunya
Sry,你说得对。按钮是否可检查?否则,争论似乎一直是错误的。 – slosd
不,可以检查按钮...好像我应该实现自己的信号? – Kolyunya