<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 【Qt編程】基于Qt的詞典開發系列--無邊框窗口的拖動 在上一篇文章中,我們講述了如何進行無邊框窗口的縮放與拖動,**而在一些情況下,我們的窗口只需要進行拖動也不需要改變其大小**,比如:QQ的登錄窗口。本來在上一篇文章中已經講述了如何進行窗口的拖動,但是卻與窗口的縮放相關的程序放在一起,**下面專門單獨分離出來。** 窗口的拖放只涉及到鼠標事件:按下操作、釋放操作和移動操作,因此只需要重寫這三個函數。由于程序比較簡單,并且注釋也比較詳細,就不作過多介紹。新建一個基類為QWidget的Qt Gui應用程序,**只需修改widget.h和widget.cpp文件如下**: **1、widget.h文件** ~~~ #ifndef WIDGET_H #define WIDGET_H #include <QWidget>//注意我使用的是Qt5,Qt4與Qt5的區別可以參考http://qt-project.org/wiki/Transition_from_Qt_4.x_to_Qt5 #include<QMouseEvent> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); QPoint move_point; //移動的距離 bool mouse_press; //鼠標按下 //鼠標按下事件 void mousePressEvent(QMouseEvent *event); //鼠標釋放事件 void mouseReleaseEvent(QMouseEvent *event); //鼠標移動事件 void mouseMoveEvent(QMouseEvent *event); private: Ui::Widget *ui; }; #endif // WIDGET_H ~~~ **2、widget.cpp文件** ~~~ #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); this->setMouseTracking(false); setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);//設置主窗口無邊框 } Widget::~Widget() { delete ui; } void Widget::mousePressEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) { this->setMouseTracking(true); mouse_press = true; //鼠標相對于窗體的位置(或者使用event->globalPos() - this->pos()) move_point = event->pos();; } } void Widget::mouseReleaseEvent(QMouseEvent *event) { //設置鼠標為未被按下 mouse_press = false; } void Widget::mouseMoveEvent(QMouseEvent *event) { //若鼠標左鍵被按下 // qDebug()<<"mouse_press="<<event->globalPos(); if(mouse_press) { //鼠標相對于屏幕的位置 QPoint move_pos = event->globalPos(); //移動主窗體位置 this->move(move_pos - move_point); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看