如何在 Qt 的 qgrid 布局中获取小部件的坐标

Posted

技术标签:

【中文标题】如何在 Qt 的 qgrid 布局中获取小部件的坐标【英文标题】:How get coordinates of widget in qgrid layout in Qt 【发布时间】:2013-06-08 23:47:07 【问题描述】:

我正在尝试设计一个带有充满 qpushbuttons 的网格布局的数独游戏,在将一个数字插入到 qpush 按钮中的那一刻,当点击它们时我需要检查它是否是有效的移动,具体取决于其他“细胞”。我的问题是我需要在 qgridlayout 中单击但无法找到如何操作的 qpushbutton 的行和列。有没有办法获取qgridlayout上点击的qpushbutton的坐标?

【问题讨论】:

【参考方案1】:

http://doc.qt.io/qt-4.8/layout.html#horizontal-vertical-grid-and-form-layouts

http://doc.qt.io/qt-4.8/qgridlayout.html#getItemPosition

http://doc.qt.io/qt-4.8/qlayout.html#indexOf

您的代码应该类似于:

int index = my_grid_layout->indexOf(clicked_widget);

if(index != -1)

    int row, col, col_span, row_span;
    my_grid_layout->getItemPosition(index, &row, &col, &col_span, &row_span);
    qDebug() << "Clicked Item is at:" << row << col 
             << "spanning" << row_span << col_span;

希望对您有所帮助。

【讨论】:

以上是关于如何在 Qt 的 qgrid 布局中获取小部件的坐标的主要内容,如果未能解决你的问题,请参考以下文章

QT:如何在布局中动态添加和删除小部件?

如何在 Qt 中制作可展开/可折叠的部分小部件

Qt Designer 使小部件在布局中与另一个小部件重叠

如何在 Qt 中保持小部件的纵横比?

具有单独布局的嵌套 Qt 小部件

Qt:获取父母区域内的所有孩子