У меня есть QHeaderView, который делает несколько вещей, нажимая слева или справа от центра заголовка раздела.
Для этого мне нужно знать позицию щелчка по отношению к (возможно прокручиваемому) содержимому окна просмотра QHeaderView .
Фактическая позиция щелчка, однако, относится только к QHeaderView (который всегда фиксирован).
Я пробовал варианты mapTo / From, но не могу найти правильный способ сделать это.
Вот упрощенный код:
void MyTableHeader::headerSectionClicked(int section_index, int click_pos)
{
int section_size = sectionSize(0); // All sections in a header are equally sized
int section_center = (section_size * (section_index+ 1)) - (section_size / 2); // Center of the clicked section
if (section_index>= 0)// if mouse is over an item
{
if (orientation() == Qt::Horizontal)
{
QPoint x_pos = QPoint(click_pos, 0);
int mapped_offset = viewport()->mapFrom(this, x_pos).x();
if (mapped_offset != -1)
{
// If the click was to the right of the center, iterate on the index
if (mapped_offset >= section_center)
{
section_index++;
}
}
}
else
{
// Same thing for the Y-dimension
}
}
// Neat stuff after this
}
В той части, где возникает проблема, я хочу узнать, на какой стороне раздела произошел щелчок.
// If the click was to the right of the center, iterate on the index
if (mapped_offset >= section_center)
{
in_index++;
}
Этот mapped_offset неправильно ссылается на тот же контекст, что и центр сечения.