我有一个继承自QDoubleSpinBox的类。
class NumericEdit : public QDoubleSpinBox
{
public:
NumericEdit( QWidget *p_parent = nullptr );
protected:
bool event( QEvent *p_event ) override;
void keyPressEvent( QKeyEvent *p_event ) override;
void keyReleaseEvent( QKeyEvent *p_event ) override;
void focusInEvent( QFocusEvent *p_event ) override;
void focusOutEvent( QFocusEvent *p_event ) override;
............
};
NumericEdit::NumericEdit( QWidget *p_parent ) : QDoubleSpinBox( p_parent )
{
initStyleSheet();
setButtonSymbols( QAbstractSpinBox::NoButtons );
setGroupSeparatorShown( true );
..........
}
当我双击进入编辑字段时,结果如下所示,仅标记了组分隔符之间的部分。如果我单击三次,则会标记整个文本。
应该如何更改,以便在双击编辑字段时(无论是整数部分还是小数部分)都标记了整个文本?
答案 0 :(得分:2)
解决方案是重新实现QLineEdit::mouseDoubleClickEvent
方法(而不是QDoubleSpinBox::mouseDoubleClickEvent
)。
自定义行编辑:
class ExtendedLineEdit : public QLineEdit
{
Q_OBJECT
public:
explicit ExtendedLineEdit(QWidget *parent = nullptr);
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
}
void ExtendedLineEdit::mouseDoubleClickEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
selectAll();
event->accept();
return;
}
QLineEdit::mouseDoubleClickEvent(event);
}
然后将其设置为您的自定义旋转框
NumericEdit::NumericEdit(QWidget *p_parent) : QDoubleSpinBox(p_parent)
{
//...
ExtendedLineEdit* lineEdit = new ExtendedLineEdit(this);
setLineEdit(lineEdit);
}