鼠标在对话框空白地方才能响应事件,在控件上面不响应鼠标事件
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()))//判断鼠标是否在空间区域
{
}