QLineedit disabling/re-enabling。

QLineedit disabling/re-enabling.

我有一个包含四个变量的方程式,只需要定义 3 个就可以将程序定义为 运行。当定义了 3 个参数时(通过我的 GUI 中的 lineedits),我希望第四个参数显示为灰色。我目前只知道如何通过在编辑另一个行时禁用一个行编辑来 link 两个参数。例如

void WaveformGen::on_samples_textEdited(const QString &arg1)
{
    ui->cycles->setDisabled(true);
}

因此,当编辑示例时,我禁用了另一个名为 cycles 的行编辑

制作一个插槽,根据需要从不同的 lineEdits 连接尽可能多的 textEdited(const QString &arg1),然后在插槽的主体中使用 QObject::sender() 方法

检索信号发送器

使用一个插槽:

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());
    }
}