Включить изменение размера в QWidget

Я хочу изменить размер в QWidget используя Qt, как показано на рисунке ниже.

Я использовал следующие пробовал следующие способы:

с помощью QSizeGrip, setSizeGripEnabled

1 ответ

Решение

Для полноты приведу два примера: с Qt Designer и без него.


Пример использования Qt Designer

дизайнер

Проверить sizeGripEnabled имущество:

свойства

Предварительный просмотр из Qt Designer (Форма> Предварительный просмотр...):

предварительный просмотр

Минимальное приложение для отображения диалога:

#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

результат


Без 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();
}

Результат

результат


Обновление для включения безрамочного режима

Добавление подсказки Frameless 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();
}

Результат

бескаркасных


Поскольку все параметры работают прямо, я бы посоветовал вам внимательно изучить дизайн кода / пользовательского интерфейса для таких вещей, как установка максимального / минимального размера (если оба параметра одинаковы, ручка все равно будет доступна, но не изменит размер совсем).

Другие вопросы по тегам