我有一个QLineEdit,我想连接到QLabel,以便根据输入文本的有效性。我这样做有两个问题。
QLineEdit *text = new QLineEdit(this);
layout->addWidget(text, rowno, 0);
QLabel *button = new QLabel(this);
button->setStyleSheet("QLabel { background-color : green; color : white; }");
button->setAlignment(Qt::AlignCenter);
button->setText("OKAY");
QObject::connect(text, SIGNAL(textEdited(const QString &)), button, SLOT(CheckValidity(const QString &)));
这不会将QLineEdit中所做的任何更改连接到我的自定义插槽。我不知道为什么!同样在自定义插槽中,我想根据传递的QString更改标签的背景颜色。如何获得标签参考?它作为信号的接收器存在,但我想不出一种引用它的方法。
CheckValidity
不是QButton
的广告位,而是在您自己的类中定义的自定义广告位(我假设是这样,因为您没有指定它)。
因此,将最后一行更改为:
QObject::connect(text, SIGNAL(textEdited(const QString &)), this, SLOT(CheckValidity(const QString &)));
如果您想知道发送者对象,请使用qobject_cast
:
QLabel *sender_label = qobject_cast<QLabel*> (sender ());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句