我有一个包含四个变量的等式,只需要定义3个程序即可运行。当定义了3个参数时(通过我的GUI中的lineedits),我希望第四个参数变为灰色。我只知道如何在编辑另一个时保留一个lineedit来链接两个参数。 e.g。
void WaveformGen::on_samples_textEdited(const QString &arg1)
{
ui->cycles->setDisabled(true);
}
因此,当编辑样本时,我禁用另一个名为cycles
的lineedit答案 0 :(得分:1)
使用一个插槽:
class WaveformGen {
private:
QList<QLineEdit *> m_lineEdits;
private slots:
void lineEditTextEdited(const QString &text);
...
};
WaveformGen::WaveformGen()
{
...
// create an ordered list of line edits:
m_lineEdits << ui->lineEdit1 << ui->lineEdit2 << ui->lineEdit3 << ui->lineEdit4;
// connect all to same slot:
foreach(QLineEdit *lineEdit, m_lineEdits) {
connect(lineEdit, SIGNAL(textEdited(const QString &)), this, SLOT(lineEditTextEdited(const QString &)));
}
}
void WaveformGen::lineEditTextEdited(const QString &str)
{
// iterate over all lineEdits:
for (int i = 0; i < m_lineEdits.count() - 1; ++i) {
// enable the next lineEdit if the previous one has some text and not disabled
m_lineEdits.at(i+1)->setEnabled(!m_lineEdits.at(i)->text().isEmpty() && m_lineEdits.at(i)->isEnabled());
}
}
答案 1 :(得分:0)
制作一个插槽,根据需要从不同的lineEdits连接尽可能多的textEdited(const QString &arg1)
,然后使用QObject::sender()
方法在插槽的主体中检索信号发送方