//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void USplata_zaborg_Delegate::setEditorData(QWidget *editor, const QModelIndex &index) const { QSpinBox *spinbox; int value; if ((index.column() == durationColumn_1) || (index.column() == durationColumn_3) || (index.column() == durationColumn_4) || (index.column() == durationColumn_5) || (index.column() == durationColumn_6) || (index.column() == durationColumn_7)) { value = index.model()->data(index, Qt::DisplayRole).toInt(); spinbox = qobject_cast<QSpinBox *>(editor); spinbox->setValue(value); spinbox->selectAll(); } else if (index.column() == durationColumn_2) { double sum = index.model()->data(index, Qt::DisplayRole).toDouble(); QDoubleSpinBox *double_spinbox = qobject_cast<QDoubleSpinBox *>(editor); double_spinbox->setValue(sum); double_spinbox->selectAll(); } else { QSqlRelationalDelegate::setEditorData(editor, index); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void UKvyt_Delegate::setEditorData(QWidget *editor, const QModelIndex &index) const { if (index.column() == durationColumn_2) { double value = index.model()->data(index, Qt::DisplayRole).toDouble(); QDoubleSpinBox *double_spinbox = qobject_cast<QDoubleSpinBox *>(editor); double_spinbox->setValue(value); double_spinbox->selectAll(); } else if ( (index.column() == durationColumn_3) || (index.column() == durationColumn_4) ){ QDateEdit * dateEdit = qobject_cast<QDateEdit *>(editor); dateEdit->setDate( index.model()->data(index, Qt::DisplayRole).toDate() ); dateEdit->setCurrentSection( QDateTimeEdit::DaySection ); dateEdit->stepBy( 0 ); } else if ((index.column() == durationColumn_5) || (index.column() == durationColumn_1)){ int value = index.model()->data(index, Qt::DisplayRole).toInt(); QSpinBox *spinbox = qobject_cast<QSpinBox *>(editor); spinbox->setValue(value); spinbox->selectAll(); } else { QSqlRelationalDelegate::setEditorData(editor, index); } }
QWidget* QtnPropertyDelegateInt::createValueEditorImpl(QWidget* parent, const QRect& rect, QtnInplaceInfo* inplaceInfo) { QSpinBox* spinBox = new QSpinBox(parent); spinBox->setGeometry(rect); new QtnPropertyIntSpinBoxHandler(owner(), *spinBox); if (inplaceInfo) { spinBox->selectAll(); } return spinBox; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void USpravy_subs_Delegate::setEditorData(QWidget *editor, const QModelIndex &index) const { QSpinBox *spinbox; int value; if ( (index.column() == durationColumn_1) || (index.column() == durationColumn_2) || (index.column() == durationColumn_4) || (index.column() == durationColumn_3) || (index.column() == durationColumn_5) || (index.column() == durationColumn_6)) { value = index.model()->data(index, Qt::DisplayRole).toInt(); spinbox = qobject_cast<QSpinBox *>(editor); spinbox->setValue(value); spinbox->selectAll(); } else { QSqlRelationalDelegate::setEditorData(editor, index); } }
bool IpAddressWidget::eventFilter(QObject *object, QEvent *event) { //如果object不是四个输入框,则返回 int nowBox = -1; for(int i=0; i<4; i++) { if( object == m_SpinBox[i] ) nowBox = i; } if( -1 == nowBox ) return false; QSpinBox *spinBox = dynamic_cast<QSpinBox*>(object); //如果某个输入框得到了输入焦点,则将它们设为全选状态 if( QEvent::FocusIn == event->type() ) { spinBox->selectAll(); return true; } //如果输入框内的字符为0,则清空该输入框(防止用户输入多个0) else if( QEvent::KeyPress == event->type() ) { QString context = spinBox->text(); if( "0" == context ) spinBox->clear(); } //如果输入框内的数字大于25,则输入焦点自动跳到下一格 else if( QEvent::KeyRelease == event->type() ) { int val = spinBox->value(); if( spinBox->value() > 25 && nowBox < 3 ) { m_SpinBox[nowBox+1]->setFocus(); } } return false; }