Как я могу получить QDate, щелкнув правой кнопкой мыши на ячейке QCalendarWidget?
Я создал виджет с именем CCalendar, который наследуется от QCalendarWidget. Я отображаю customContextMenu, когда пользователь щелкает правой кнопкой мыши виджет CCalendar, и я хочу получить QDate дня, на который пользователь щелкнул правой кнопкой мыши, чтобы изменить его.
ContextMenu работает как задумано, теперь я хотел бы изменить содержимое меню в зависимости от дня, когда мы щелкнули.
Я проверил исходный код QCalendarWidget по адресу https://github.com/radekp/qt/blob/master/src/gui/widgets/qcalendarwidget.cpp
Я уже пытался получить доступ, используя дочерние элементы QCalendarWidget, такие как QTableWidget*, называемый "qt_calendar_calendarview", выполнив:
QTableView *tab = this->findChild<QTableView*>("qt_calendar_calendarview");
QModelIndex idx = tab->indexAt(position);
Это позволяет мне узнать, по какой ячейке QTableView мы щелкнули (например, по ячейке 2,3), но я не могу идти дальше. Для этого я хотел бы получить доступ к calendarWidgetPrivate->m_model, но, как следует из названия... это личное.
я
Это далеко, у меня есть это, но это явно не путь.
ccalendar.cpp:
CCalendar::CCalendar(QWidget *parent) : QCalendarWidget(parent)
{
// ... stuff ...
this->setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showCalendarContextMenu(const QPoint&)));
}
// ... more code ...
void CCalendar::showCalendarContextMenu(const QPoint& position)
{
QTableView *tab = this->findChild<QTableView*>("qt_calendar_calendarview");
QModelIndex idx = tab->indexAt(position);
qDebug() << "Element clicked is : " << idx ;
}
Может ли кто-нибудь указать мне путь?