本文主要是介绍QWindowsWindow::setGeometry: Unable to set geometry,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 把setFixedSize的大小加大后的确可以解决
2 当时笔记本外接的显示屏,当把外接显示屏去掉就没有问题了
可能导致setGeometry()不生效的原因:
1)部件尚未显示:如果部件尚未显示在屏幕上,setGeometry()函数将不会生效。您需要首先通过show()或raise()函数将部件显示在屏幕上。
2)布局限制:如果部件是在一个布局中,布局限制可能会影响setGeometry()函数的行为。在这种情况下,您需要使用布局相关的函数来调整部件的位置和大小,例如QGridLayout、QHBoxLayout或QVBoxLayout等。
3)父部件的限制:如果部件的父部件设置了限制,例如setMaximumSize()或setMinimumSize()等,这可能会影响子部件的几何属性。在这种情况下,您需要调整父部件的限制或者将子部件添加到另一个不受限制的部件中。
4)绘图环境问题:在某些情况下,setGeometry()函数可能不会立即反映在屏幕上,这可能是由于绘图环境的延迟更新。您可以尝试调用update()或repaint()函数来强制部件重新绘制。
5)代码执行速度:在某些情况下,由于代码执行速度过快,可能会导致setGeometry()函数在程序运行过程中未被正确执行。您可以尝试使用QTimer或类似的技术来延迟执行setGeometry()函数,以确保在程序运行时正确执行。
6)没有正确设置初始大小:setGeometry()函数只在部件被创建时设置一次初始大小。如果你在部件创建后多次调用setGeometry(),那么只有第一次调用会生效。你需要通过其他方式(例如,通过resize()函数)来改变部件的大小。
Qt中setGeometry的理解
如果在控件中加上了layout布局,就会发现发现没有办法使用setGeometry函数了,这是因为布局已经被layout管理,没你啥事了。
但是父控件被layout管理,父控件的子控件却没有啊 ,所以在创建子控件的时候,需要指定子控件的父控件是谁。这样子控件就可以使用
setGeometry函数,可以自由的调整位置,但是只能在父控件的范围内调整位置,同时必须注意setGeometry之后一定要调用show函数,
否则可能看不到控件存在。
这篇关于QWindowsWindow::setGeometry: Unable to set geometry的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!