Создал QWidget с именем WPunktDialog в QMainWidget. Интересует вопрос, как заставить QWidget двигатся при нажатии на него и перемещения мышки, т.е как обычное окно?
Через метод QWidget::move
У метода такая сигнатура:
void move(int x, int y)
void move(const QPoint &)
Пример:
QWidget w;
w.show();
w.move(100, 100);
Чтобы для двигать виджеты мышкой нужно переопределить события mousePressEvent и mouseMoveEvent:
class Widget: public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent=0) : QWidget(parent) {
}
protected:
void mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
oldPos = event->pos();
}
}
void mouseMoveEvent(QMouseEvent *event)
{
QPoint delta = event->pos() - oldPos;
move(pos() + delta);
}
private:
QPoint oldPos;
};
Честно говоря, у меня рядом Qt/Qt Creator не было, поэтому изначально код на питоне писал, а после переписывал на с++, поэтому проверить его возможности не было, но должно работать.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей