Hy there
I am new to Qt and I tried to create a window without a frame that can be dragged. The problem is that if I move the window ... there are thousands (sorry, I donβt know how to describe it in English) until I stop. Is there a way to fix this, or am I not mistaken?
Mywindow.h
#include <QMainWindow> #include <QLabel> #include <QPushButton> #include <QMouseEvent> class MyWindow : public QMainWindow { Q_OBJECT private: QLabel *label_title,*label_quit; QPushButton *bn_exit; QPixmap *pixmap; QPoint m_dragPosition; public: MyWindow(QMainWindow *parent = 0, Qt::WindowFlags flags = 0); protected: void paintEvent(QPaintEvent *event); void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); };
Mywindow.cpp
#include "MyWindow.h" #include <QApplication> #include <QPainter> #include <QLabel> MyWindow::MyWindow(QMainWindow *parent, Qt::WindowFlags flags) : QMainWindow(parent,flags) { resize(1024,576); setWindowTitle("Versuch1"); //Titel label_title = new QLabel("irgendwas",this); label_title->setGeometry(10,10,500,40); label_title->setStyleSheet("font-family: Arial; letter-spacing: 4px;font-weight:bold; color : white;font-size: 30px"); //Exit-Button bn_exit = new QPushButton("[Exit]",this); bn_exit->setGeometry(975,10,40,20); bn_exit->setStyleSheet("QPushButton {font-family: Verdana; font-size:15px; top:0px; border: none; background-color:#101010; color:white} QPushButton:hover {color: red }"); connect(bn_exit,SIGNAL(clicked()),qApp,SLOT(quit())); } void MyWindow::paintEvent(QPaintEvent *event) // Painter { QPainter painter(this); painter.setPen(Qt::NoPen); // deactivate Border painter.setBrush(QBrush("#101010")); // black title and footer painter.drawRect(0, 0, 1024, 60); painter.setBrush(QBrush("#101010")); painter.drawRect(0, 516, 1024, 576); } void MyWindow::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton) { move(event->globalPos() - m_dragPosition); event->accept(); } } void MyWindow::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_dragPosition = event->globalPos() - frameGeometry().topLeft(); event->accept(); } }
main.cpp
#include <QApplication> #include "MyWindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWindow* window = new MyWindow(0, Qt::FramelessWindowHint); window->show(); return app.exec(); }
Hi Alex
qt window move mouse drag
Alex
source share