У меня есть класс, который наследует виджет QPushButton. Я хочу иметь пользовательский вид этой кнопки, поэтому я переопределил метод paintEvent. Все кнопки, которые я хочу рисовать, являются дочерними элементами объекта QFrame.QT paintEvent для QWidget
И там у меня есть проблема. Я не могу перерисовать эти объекты.
Моя paintEvent функция:
void Machine::paintEvent(QPaintEvent*) {
QPainter painter(this);
QRect geo = this->geometry();
int x, y, width, height;
x = geo.x()-10;
y = geo.y()-10;
width = geo.width()-3;
height = geo.height()-5;
painter.fillRect(x, y, width, height, QColor(220,220,220));
painter.drawText(x+10, y+10, "Machine " + QString::number(id));
}
Когда виджет находится в верхнем левом углу QFrame, желаемый эффект ОК. Но когда я перемещаю кнопку где-то еще, виджет начинает исчезать. На изображениях вы можете увидеть, что происходит:
Кнопка просто перемещается немного точек вниз влево. Почему он работает так? QFrame, который является контейнером для этой кнопки, достаточно велик.
Заранее спасибо;)
Что делать, если вы повторно реализуете moveEvent и вызывают обновление оттуда? – koplersky