0

ユーザーが周波数間隔を入力できるように、使用する lineEdit があります。

// Making the lineedit objects only accept numbers and align it leftside
ui->frequency->setValidator(new QIntValidator(36, 1000, this));
ui->frequency->setAlignment(Qt::AlignRight);

上限の 1000 までは正常に機能しますが、下限は機能しません。そこで、それを制御するスロットを作成しました。

// Control freqeuncy interval
void gui::f_interval()
{
    QString f = ui->frequency->text();
    freq = f.toInt();

    if (freq < 36)
    {
        int status = QMessageBox::warning(this,"Warning","Invalid frequency interval",QMessageBox::Ok);
    }
}

それをlineEditの信号に接続し、

// Control frequency interval
connect(ui->frequency, SIGNAL(editingFinished()), this, SLOT(f_interval()));

ユーザーが 36 未満の数値を入力すると、警告ダイアログ ウィンドウが表示されるようにします。

しかし、うまくいかないようです。誰でも私を助けることができますか?

4

1 に答える 1

1

editFinished の代わりにtextChangedシグナルで接続したい。

LE: また、バリデータに問題があったことを覚えていないので、Qt のバージョン、OS のバージョン、コンパイラなどの詳細を教えてください。問題がサンプル プロジェクトで再現されるかどうかを確認してください。

于 2013-01-31T13:38:50.290 に答える