簡體   English   中英

Qt查明用戶是否更改了QSpinBox

[英]Qt find out if QSpinBox was changed by user

假設我有一個QSpinBox ,我怎么能看出這個值是從用戶還是從其他函數手動更改的?

編輯:我只想在用戶更改值時執行某些操作,但如果您的程序執行此操作(setValue),我不想執行此操作。

可能的方法:

ui->spinBox->blockSignals(true);
ui->spinBox->setValue(50);
ui->spinBox->blockSignals(false);

在這種情況下,不會發出信號,因此valueChanged()信號所能捕獲的只是用戶的操作。

例如:

void MainWindow::on_spinBox_valueChanged(int arg1)
{
    qDebug() << "called";
}

當用戶改變值通過鼠標或通過類型keybord,你看"called" ,但是當你setValue與阻塞信號,看不到"called"

另一種方法是提供一些bool變量並在setValue之前將其設置為true並在槽中檢查此變量。 如果是假(用戶操作) - 執行某些操作,如果不是 - 請不要執行操作(將bool更改為false)。 優點:你不會阻擋信號。 缺點:可能是難以讀取的代碼,如果插槽調用很多次,您將多次進行這種不必要的檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM