Как я могу получить 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 ;
}

Может ли кто-нибудь указать мне путь?

0 ответов

Другие вопросы по тегам