Допустим, у меня есть собственный виджет и я добавляю его в главное окно в qt.
Как видите,красная область - это пользовательский виджет.Что я хочу сделать, так это то, что когда мышь нажимается в красной области и перемещается, все окно также перемещается.
Я знаю, как просто реализовать mousePressEvent
и mouseMoveEvent
;но при работе с окном с пользовательским виджетом я не знаю, как переместить все окно при нажатии мыши на пользовательском виджете.
Также хочу отметить, что мне нужно только окноперемещается, когда мышь нажимают и перемещают в красной области, а когда мышь нажимают и перемещают в остальной части области основного окна, ничего не произойдет.
Вот как выглядит мой CustomWidget
класс:
CustomWidget::CustomWidget(QWidget *parent) : QWidget(parent)
{
setFixedSize(50, 50);
setStyleSheet("QWidget { background: red; }");
}
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
}
void CustomWidget::mousePressEvent(QMouseEvent *event)
{
xCoord = event->x();
yCoord = event->y();
}
void CustomWidget::mouseMoveEvent(QMouseEvent *event)
{
move(event->globalX() - xCoord, event->globalY() - yCoord);
}
Если вы удивляетесь, почему я хочу это сделать, в своем приложении я спрятал строку заголовка и нарисовал пользовательскийстрока заголовка сама.Но окно не является подвижным, поэтому я хочу сделать все окно подвижным, когда мышь нажата и перемещена в строке заголовка.
Надеюсь, я все объяснил ясно.