当前位置: 代码迷 >> QT开发 >> 鼠标在对话框空白地方才能响应事件,在控件上面不响应鼠标事件解决方案
  详细解决方案

鼠标在对话框空白地方才能响应事件,在控件上面不响应鼠标事件解决方案

热度:92   发布时间:2016-04-25 03:32:32.0
鼠标在对话框空白地方才能响应事件,在控件上面不响应鼠标事件
1、我想实现在groupbox上获取鼠标按下拖动的形成的四个点坐标。
2、可是鼠标放在空间上根本不响应鼠标事件,
3、求各位大大们帮助,急求,详细。

------解决方案--------------------
#include <QApplication>
#include <qgroupbox.h>
#include <QMouseEvent>
#include <qwidget.h>
#include <qdebug.h>
class CGroupBox : public QGroupBox
{
public:
    CGroupBox(QWidget *parent = NULL) : QGroupBox(parent)
    {

    }

protected:
    void mousePressEvent(QMouseEvent *event)
    {
        qDebug() << event->pos();
    }
};


int main(int argc, char**argv)
{
    QApplication app(argc,argv);

    CGroupBox grpBox;
    grpBox.show();

    return app.exec();
}
这是我的测试程序,可以响应按事件
------解决方案--------------------
网上纯粹是误人子弟,这是QDialog,可以响应事件
#include <QApplication>
#include <qgroupbox.h>
#include <QMouseEvent>
#include <qwidget.h>
#include <qdebug.h>
#include <qdialog.h>
#include <qlayout.h>
class CGroupBox : public QGroupBox
{
public:
    CGroupBox(QWidget *parent = NULL) : QGroupBox(parent)
    {

    }

protected:
    void mousePressEvent(QMouseEvent *event)
    {
        qDebug() << event->pos();
    }
};

class CDlg : public QDialog
{
public:
    CDlg(QWidget *parent = NULL) : QDialog(parent)
    {
        CGroupBox *pgb = new CGroupBox(this);
        pgb->setTitle("test");
        QHBoxLayout *phLayout = new QHBoxLayout(this);
        phLayout->addWidget(pgb);
    }

};

int main(int argc, char**argv)
{
    QApplication app(argc,argv);

    CDlg dlg;
    dlg.resize(500, 500);
    dlg.exec();

    return app.exec();
}

------解决方案--------------------
设置控件的mouseTracking属性为真,然后再dialog中判断鼠标坐标是否在控件区域,就可以做想做的操作了。
    QRect lwRect = QRect(ui->taskIdListWidget->pos(),ui->taskIdListWidget->size());//确定控件区域
    if(lwRect.contains(ce->pos()))//判断鼠标是否在空间区域
    {
        

    }
  相关解决方案