2017-06-01 335 views
1

我想使用Qt在QWidget中调整大小功能,如下图所示。在QWidget上启用大小调整

enter image description here

我用以下尝试以下方法:

使用QSizeGripsetSizeGripEnabled

+0

我已经使用setSizeGripEnabled(真),但它仅提供了只有拐角点的光标。 – Ankul

+0

该属性仅适用于['QDialog'](http://doc.qt.io/qt-5/qdialog.html#sizeGripEnabled-prop)。 – cbuchart

+0

请提供我使用QDialog也做到这一点。我已经使用了差异门户网站上提供的所有方式,但它不起作用... – Ankul

回答

0

为了完整性我展示了两个例子:有和没有Qt设计。


例使用Qt设计

designer

检查sizeGripEnabled属性:从Qt Designer(请表>预览内

properties

预览...):

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设计

#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设计就像一个最大设置/最小尺寸(如果两者相同,抓握仍然可用,但根本不会改变尺寸)。

+0

我很欣赏的解决你的问题,但我使用框架较少对话框 – Ankul

+0

非常感谢的人:) – Ankul

相关问题