2015-03-24 2 views
0

У меня есть уравнение с четырьмя переменными, для запуска программы нужно определить только 3. Когда 3 параметра были определены (через lineedits в моем графическом интерфейсе), я бы хотел, чтобы четвертый был выделен серым цветом. Я знаю только, как связать два параметра на данный момент, отключив один lineedit, когда другой отредактирован. напримерОтключение/повторное включение QLineedit.

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

Так что, когда образцы редактируются отключить другой lineedit называемого циклом

ответ

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

Это лучший способ сделать это @SageDO –

+0

Могу ли я получить немного больше объяснений о том, что происходит в коде, пожалуйста? Я не полностью следую. – SageDO

+0

@SageDO Я добавил несколько комментариев. – svlasov

0

сделать один слот, подключить как многие textEdited(const QString &arg1) от diffrent lineEdits, как вам нужно, а затем в теле слота получить отправитель сигнала с помощью QObject::sender() метод

+0

Как вы рекомендуете использовать 'отправитель()', чтобы найти edut строки, которые не отредактированные ? – hyde

Смежные вопросы