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

以下是我尝试过的方法:
使用QSizeGrip,setSizeGripEnabled
发布于 2017-06-02 04:39:14
为了完整起见,我展示了两个示例:有和没有Qt设计器。
使用Qt设计器的示例

检查sizeGripEnabled属性:

从Qt设计器内部预览(Form > 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

没有Qt设计器的
#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();
}结果

更新以包括无帧模式
添加无框架窗口提示不会改变任何事情:它工作正常。显然,没有框架,因此窗口管理器提供的调整/移动方法是不可用的。
#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();
}结果

由于所有选项都是直接工作的,我建议您仔细检查代码/UI设计,以便设置最大/最小大小(如果两者相同,握把仍然可用,但根本不会改变大小)。
https://stackoverflow.com/questions/44302704
复制相似问题