2017-06-01 104 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

相關問題