如何在Qt中维护窗口小部件的宽高比以及如何使窗口小部件居中呢?
我的 Qt/C++ 程序的主窗口如下所示:

正如您在图片中看到的,该窗口主要由以下部分组成:
我想要的描述很简单:我希望在调整窗口大小时,两个画布都占用尽可能多的空间,但仍然保持正方形(宽度=高度)。我一直在努力实现这一目标,但没有成功。
让我快速描述一下这些对象:
Window我创建的派生 QWidget 的类。它有QGridLayout一个布局。LeftMenu *menu和画布Canvas *leftCanvas, *rightCanvas。和LeftMenu都是Canvas派生 QWidget 的自定义类。(注意:左侧菜单实际上由 3 个不同的小部件(子菜单)组成,窗口还有一个状态栏和一个顶部菜单,但我认为这对我的问题并不重要。)
我一直在“玩”(一点也不开心)QSizePolicy等,试图让画布的大小表现得像我想要的那样(在窗口内尽可能大,但保持高度/宽度比= 1),不成功。让我描述一下我的最新尝试,以防对您有用(如果您已经知道我的问题的解决方案,则不必继续阅读):
我重写了方法heightForWidth(),sizeHint()对于minimumSizeHint()Canvas 像这样:
class Canvas : public QWidget
{
Q_OBJECT
friend class Window;
public:
explicit Canvas(Window* window);
...
private:
void resizeEvent(QResizeEvent *resizeEvent) override;
int heightForWidth(int width) const override {return width;}
QSize sizeHint() const override
{
int size = std::min(width(), height());
return …Run Code Online (Sandbox Code Playgroud)