【问题标题】:Make a QMainWindow only horizontally-resizable - that is, width is resizable, but height is fixed使 QMainWindow 只能水平调整大小 - 也就是说,宽度是可调整的,但高度是固定的
【发布时间】:2011-09-25 09:59:44
【问题描述】:

我可以让一个带有网格布局的 QMainWindow 只在水平方向而不是垂直方向调整大小吗?

我希望它的垂直尺寸是保持所有按钮/行编辑所需的最小值。

【问题讨论】:

    标签: c++ qt layout resize qmainwindow


    【解决方案1】:

    是的,你可以。由于 QMainWindow 继承自 QWidget,因此使用 QWidget size policy 设置只允许在水平方向调整大小。

    如果在 Qt Designer 中工作,请将垂直尺寸策略设置为固定,并将最小高度设置为您想要的高度。 在代码中:

    QMainWindow *mainWindow = new QMainWindow();
    mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    

    谨慎使用绝对固定大小,因为控件可能仍需要垂直增长(例如,用户在桌面上设置了高 DPI 字体)。

    【讨论】:

      【解决方案2】:

      我在名为“C++ GUI Programming with Qt 4”一书中的一个示例中看到了另一种方式。他们做到了

          setFixedHeight(sizeHint().height());
      

      【讨论】:

        【解决方案3】:

        下面的代码可以正常工作

        setFixedHeight(sizeHint().height());
        

        但代码如下

        QMainWindow *mainWindow = new QMainWindow();
        mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
        

        不起作用,因为错误的参数被传递给函数setSizePolicy。这个函数有两种形式,一种需要QSizePolicy::Policy,另一种需要QSizePolicy,但QSizePolicy::Expanding既不是QSizePolicy也不是QSizePolicy::Policy

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-17
          • 2015-05-19
          • 2012-08-14
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          相关资源
          最近更新 更多