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());
}
}
我有一个包含四个变量的方程式,只需要定义 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());
}
}