QSpinBox
에 null 대신 dash를 그려야합니다. 또한 null 키를 누를 때마다 대시 키를 눌러야합니다.QSpinBox에서 null 대신 dash를 그리는 방법은 무엇입니까?
어떻게하면됩니까?
QSpinBox
에 null 대신 dash를 그려야합니다. 또한 null 키를 누를 때마다 대시 키를 눌러야합니다.QSpinBox에서 null 대신 dash를 그리는 방법은 무엇입니까?
어떻게하면됩니까?
setSpecialValueText()
을 사용할 수 있습니다.
valueChanged(QString)
기능을 연결하여 특수 값이 선택되어 있는지 확인할 수 있습니다. 이것은 valueChanged(int)
과 다릅니다. 전달 된 문자열의 값을 슬롯에서 확인할 수 있으며, 특수 텍스트와 같으면 뭔가 할 수 있습니다.
main()
{
connect(spinBox, SIGNAL(valueChanged(QString)), this, SLOT(doSomething(QString)));
}
void doSomething(QString valueStr)
{
if(valueStr == spinBox->specialValueText())
// Do something
else
//Convert valueStr to int and do other stuff
}
아니면 이런 일 할 수있는 : 다른 질문에 대해
main()
{
connect(spinBox, SIGNAL(valueChanged()), this, SLOT(doSomething()));
}
void doSomething()
{
if(spinBox->value() == 0)
// Do something with dash
else
//Do something with the value
}
, 당신은 keyPressEvent을 만들고 누른 키가 대시인지 아닌지 확인해야합니다. 대시라면 다른 기능을 호출하여 작업을 수행 할 수 있습니다. 편집 : BTW, specialValueText()
의 인덱스는 0입니다.
편집 : 또는 주 기능에 QShortcut
을 만들 수 있습니다. 해봐요()가 슬롯의 함수이다 :
new QShortcut(QKeySequence(Qt::Key_Minus), this, SLOT(doSomething()));
편집은 계속. 예를 들어 void doSomething();
을 헤더 파일의 private slots:
섹션에 넣습니다.
void MainWindow::doSomething()
{
ui->spinBox->setValue(0);
//This is the slot called when you press dash.
}
편집은 여전히 을 계속
: 당신은이 같은 헤더에protected:
함수를 선언해야합니다 그리고 CPP 파일에 다음과 유사한 함수를 정의
virtual void keyPressEvent(QKeyEvent *event);
는 다음을 수행해야 cpp 파일에서이 함수를 정의하십시오. 이와 같이 :
void MainWindow::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Minus)
ui->spinBox->setValue(0);
}
이 기능을 사용하기 위해 신호 나 슬롯을 연결할 필요는 없습니다. 그것은 사건입니다. 대시는 당신이 0
의미spinBox->setRange(0, 100);
부터 시작 범위와 spinBox를 작성해야, 그 때문에의
ui->spinBox->setValue(0);
을 눌렀을 때
는
if(spinBox->value() == 0)
//Then specialValueText is selected.
감사를 의미한다! 'specialValueText'는 내가 필요한 것입니다. 이제 QSpinBox는 대시 입력을 키보드로 허용합니다! 그러나 포커스를 잃었을 때 (또는 새로운 가치를 해결해야하는 다른 일이 일어나고있을 때) 가치가 회복됩니다. 어쩌면 대시를 받아들이고 'keyPressEvent'를 사용하는 더 좋은 방법이 있을까요? – Ufx
setValue()를 사용하고 있습니까? –
당신은 setValue (0); 대시를 누르면. –