在QWidget上启用调整大小

时间:2017-06-01 08:47:23

标签: c++ qt resize qdialog qtwidgets

我希望使用Qt在QWidget中调整大小,如下图所示。

enter image description here

我使用了以下方法:

使用QSizeGripsetSizeGripEnabled

1 个答案:

答案 0 :(得分:0)

为了完整起见,我展示了两个例子:使用和不使用Qt Designer。

使用Qt Designer的示例

designer

检查sizeGripEnabled属性:

properties

在Qt Designer中预览(表单>预览... ):

preview

显示对话框的最小应用程序:

#include <QtWidgets/QApplication>
#include <QDialog>
#include "ui_DialogButtonBottom.h"

class Dialog : public QDialog {
public:
  Dialog(QWidget* parent = nullptr) :
    QDialog(parent) {
    ui.setupUi(this);
  }

private:
  Ui::Dialog ui;
};

int main(int argc, char* argv[])
{
  QApplication a(argc, argv);

  Dialog dlg;
  return dlg.exec();
}

<强> Resut

result

没有Qt Designer

#include <QtWidgets/QApplication>
#include <QDialog>

class Dialog : public QDialog {
public:
  Dialog(QWidget* parent = nullptr) :
    QDialog(parent) {
    setWindowTitle("Example");
    setSizeGripEnabled(true);
  }
};

int main(int argc, char* argv[])
{
  QApplication a(argc, argv);

  Dialog dlg;
  return dlg.exec();
}

<强>结果

result

更新以包含无框架模式

添加无框窗口提示不会改变任何内容:它可以正常工作。显然,没有框架,因此Windows管理器提供的调整大小/移动方法不可用。

#include <QtWidgets/QApplication>
#include <QDialog>

class Dialog : public QDialog {
public:
  Dialog(QWidget* parent = nullptr, Qt::WindowFlags flags = 0) :
    QDialog(parent, flags) {
    setWindowTitle("Example");
    setSizeGripEnabled(true);
  }
};

int main(int argc, char* argv[])
{
  QApplication a(argc, argv);

  Dialog dlg(nullptr, Qt::FramelessWindowHint); // frameless
  return dlg.exec();
}

<强>结果

frameless

由于所有选项都是直截了当的,我建议您仔细检查您的代码/ UI设计,例如设置最大/最小尺寸(如果两者都相同,抓地力仍然可用,但赢得& #39; t根本不改变大小。