我有一个继承自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 );
..........
}当我双击编辑字段时,结果是这样的,只有组分隔符之间的部分被标记。如果我单击三次,整个文本就会被标记。

我应该如何改变,这样当我双击编辑字段(无论是整数部分还是小数部分)时,整个文本都会被标记?

发布于 2019-06-04 16:50:11
解决方案是重新实现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);
}https://stackoverflow.com/questions/56439289
复制相似问题