Попробуйте использовать композицию.Создайте свой собственный виджет, унаследовавший его от QWidget
, нарисуйте то, что вы хотите, в QWidget::paintEvent
и поместите QLineEdit
над ним.Возможно, вам придется отцентрировать его и использовать css
для QLineEdit
, чтобы он выглядел гладко.
class MyWidget: public QWidget
{
explicit MyWidget(QWidget* parent = 0):
QWidget(parent),
line_edit(new QLineEdit(this))
{
// place line_edit in center of QWidget
}
private:
QLineEdit* line_edit;
}
Или вы можете переопределить void QLineEdit::paintEvent(QPaintEvent* e)
вот так
void QLineEdit::paintEvent(QPaintEvent* e)
{
//paint your border
QLineEdit::paintEvent(e);
}
И вы не потеряете QLineEdits
«редактируемость».