以下代码段导致我的编译产生“错误:将 'const QRect' 作为 'void QRect::setHeight(int)' 的 'this' 参数传递会丢弃限定符 [-fpermissive]”。
我该如何解决这个问题,而且我注意到如果我要替换 h -= 80; 使用 h--;,编译器不会抱怨。
int h = this->geometry().height();
h -= 80;
ui->datumTable->geometry().setHeight(h);
geometry()
返回对QRect
内部对象QTableWidget
的 const 引用。
它应该是一个只读的getter。您应该复制一份,修改它并使用setGeometry
setter函数将其重新设置:
QRect rect = this->geometry();
int h = rect.height();
rect.setHeight(h - 80);
ui->datumTable->setGeometry(rect);
QRect g = this->geometry().height();
g.setHeight(g.height()-80);
ui->datumTable->setGeometry(g);
看起来geometry()
indatumTable
返回一个const QRect
. 除非也有非常量版本,否则这不是一个简单的解决方法。