如何得到 minimize/restore/close 矩形?
How to get minimize/restore/close rectangle?
我想像这样在菜单栏的末尾画一些文字
但是当 child window 在 MDI 项目中最大化时它看起来像这样
我需要修复此输出。
我想检查活动 child 是否已最大化,如果是,我想获取 minimize/restore/close 矩形以获得它们的总宽度。
我怎样才能激活 child window 以及我怎样才能得到它的按钮矩形?
// 在 yourMainWindow.cpp
...
auto child = mdiArea->addSubWindow(yourWidget);
connect(child, &QMdiSubWindow::windowStateChanged, this, &yourMainWindow::yourSlot);
...
void yourMainWindow::yourSlot(Qt::WindowStates oldState, Qt::WindowStates newState)
{
if (newState.testFlag(Qt::WindowMaximized)) {
auto child = qobject_cast<QMdiSubWindow *>(sender());
if (!child)
return;
QStyleOptionComplex opt;
opt.initFrom(child);
auto size = child->style()->sizeFromContents(QStyle::CT_MdiControls, &opt, QSize(100, 20));
qDebug() << size;
}
}
我想像这样在菜单栏的末尾画一些文字
但是当 child window 在 MDI 项目中最大化时它看起来像这样
我需要修复此输出。
我想检查活动 child 是否已最大化,如果是,我想获取 minimize/restore/close 矩形以获得它们的总宽度。
我怎样才能激活 child window 以及我怎样才能得到它的按钮矩形?
// 在 yourMainWindow.cpp
...
auto child = mdiArea->addSubWindow(yourWidget);
connect(child, &QMdiSubWindow::windowStateChanged, this, &yourMainWindow::yourSlot);
...
void yourMainWindow::yourSlot(Qt::WindowStates oldState, Qt::WindowStates newState)
{
if (newState.testFlag(Qt::WindowMaximized)) {
auto child = qobject_cast<QMdiSubWindow *>(sender());
if (!child)
return;
QStyleOptionComplex opt;
opt.initFrom(child);
auto size = child->style()->sizeFromContents(QStyle::CT_MdiControls, &opt, QSize(100, 20));
qDebug() << size;
}
}