QLineedit禁用/重新启用。

时间:2015-03-24 13:38:08

标签: qt qtgui qlineedit

我有一个包含四个变量的等式,只需要定义3个程序即可运行。当定义了3个参数时(通过我的GUI中的lineedits),我希望第四个参数变为灰色。我只知道如何在编辑另一个时保留一个lineedit来链接两个参数。 e.g。

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

因此,当编辑样本时,我禁用另一个名为cycles

的lineedit

2 个答案:

答案 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()方法在插槽的主体中检索信号发送方