Положение QToolButton не изменяется при изменении размера или перемещении родительского виджета.
У меня есть класс с именем Titlebar, унаследованный от QWidget. Следующий код входит в конструктор класса Titlebar:
m_queueBtn = new QToolButton;
m_serverToolBar = new QToolBar;
m_serverToolBar->addWidget(m_queueBtn);
QPoint pos = m_queueBtn->pos();
Во время печати m_queueBtn->pos()
, он всегда показывает одно и то же значение вместо изменения размера или перемещения.
1 ответ
Размерная политика QToolButton
это Fixed/Fixed
по умолчанию, изменение размера его родителя не будет иметь никакого эффекта. Также, pos()
возвращает координаты, относящиеся к его родительскому виджету, поэтому перемещение родителя не будет иметь никакого эффекта.
Если вы хотите получить глобальную позицию дочернего виджета (то есть относительно рабочего стола), вы можете использовать mapToGlobal:
QPoint pos = m_queueBtn->mapToGlobal(m_queueBtn->pos());
Или чтобы перевести дочерние координаты в положение относительно одного из его виджетов-предков, вы можете использовать mapTo:
QPoint pos = m_queueBtn->mapTo(ancestor, QPoint(0, 0));