Положение 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));
Другие вопросы по тегам