Создал 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
не было, поэтому изначально код на питоне писал, а после переписывал на с++
, поэтому проверить его возможности не было, но должно работать.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собрал проект Qt, но при попытке запуска из Qt Creator в консоли сборки следующие сообщения:
Есть сервер, на который могут загружаться файлы MS Word и MS ExcelКак, используя java, убедиться, что они не содержат вложения в виде exe-файлов, jar-ников...