【发布时间】:2020-08-04 11:16:35
【问题描述】:
我想制作一个大小为 16x16 的巨大按钮网格(500-1000 个单元格),但我不确定最好的方法是什么。 我尝试用 QTableView 来做,但下面的代码没有使单元格足够小(它适用于更大的尺寸)
QHeaderView * vertHeader = ui->view->verticalHeader();
vertHeader->setSectionResizeMode(QHeaderView::Fixed);
vertHeader->setDefaultSectionSize(16);
vertHeader->setVisible(false);
QHeaderView * horHeader = ui->view->horizontalHeader();
horHeader->setSectionResizeMode(QHeaderView::Fixed);
horHeader->setDefaultSectionSize(16);
horHeader->setVisible(false);
下面是单元格与 30x30 矩形相比的外观:
是否可以使单元格更小?和/或仅使用 QGraphicsScene 来完成该任务会更好吗?
我也考虑过使用QGridLayout,但是使用它的性能不会很糟糕吗?
【问题讨论】:
-
你想要“按钮”吗?像一个大的可点击场景,你只需要检测坐标并确定它们属于哪个“虚拟按钮”这样的东西也适合你吗?
-
@DanM。我认为它对我有用,但实施它有多难?特别是如果我希望按钮在鼠标按钮指向它并按下时看起来被按下
-
我会说先尝试幼稚的方法(QGridLayout)看看。
-
@crends Alexandre 已经指出了解决方案。我将补充一点,我在 QML 中做了类似的事情,而且这很简单。不确定基于纯 QWidget 的实现,但我认为这并不难,只是更多样板。特别是如果您不尝试模仿原生按钮的外观。
标签: c++ qt qtableview qgraphicsscene