Демо код тут: http://gist.github.com/517445
Пытаюсь отправить событие типа «левые клик» виджету, а он его не принимает =( Настоящей мышкой работает как надо.
Вот код моего виджета, который просто в себе содержит QCalendarWidget и QPushButton.
#include "calendar.h"
Calendar::Calendar(QWidget *parent) :
QWidget(parent)
{
qCal = new QCalendarWidget;
qBtn = new QPushButton(tr("Press me"));
connect(qBtn, SIGNAL(clicked()), this, SLOT(testCustomClick()));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(qCal);
layout->addWidget(qBtn);
setLayout(layout);
qDebug() << "Date:" << QDate::currentDate();
}
Calendar::~Calendar()
{
}
void Calendar::testCustomClick()
{
QMouseEvent qm2(QEvent::MouseButtonPress, QPoint(qCal->width()/2,qCal->height()/2), Qt::LeftButton , Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(qCal, &qm2);
}
void Calendar::mousePressEvent(QMouseEvent* ev)
{
qDebug() << "mouse event: " << ev << "x=" << ev->x() <<" y=" << ev->y();
QWidget::mousePressEvent(ev);
}
При нажатии на кнопку пытаюсь сгенерировать клик в центре виджета-календаря, но вместо того что б выбралась там дата, событие все-равно приходит в мой виджет (срабатывает mousePressEvent, видно по выводу qDebug() ) при этом если настоящей мышкой ткнуть в календарь, то Calender::mousePressEvent не срабатывает, что логично, т.к. событие обрабатывается календарем и наверх не посылается.
Посылаю событие через QApplication::sendEvent прямо на виджет календаря, но no luck =( Может у кого идеи будут?