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