QT 筆記:禁止調整窗口大小

Qt 是一個跨平臺的、基於 LGPL 協議的界面類庫,可以方便地實現 C++ 的可視化窗口編程,在很大程度上彌補了 C++ 語言界面編程的弱點。

由於要支持跨平臺,一些基於平臺的功能就不能直接寫入類庫,導致了使用 Qt 時一些功能需要變通的方法來實現。

比如:Qt 並不支持直接禁止用戶調整窗口大小。變通的方法是將窗口的最小大小和最大大小設置為一樣。

為了更方便,QWidget 類實現了 setFixedSize(int w, int h) 方法,該方法的實質就是將窗口的大小、最小大小、最大大小設置為相同的值。

唯一的缺憾是,通過這種方法實現的窗口固定大小的效果不是很完美,比如,在 Windows 操作系統下,在窗口邊框處仍然提示可以拉動窗口以改變大小,但是拉動時卻拉不動。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Qt::WindowFlags flags = 0;
    flags |= Qt::WindowMinimizeButtonHint;
    setWindowFlags(flags); // 設置禁止最大化
    setFixedSize(577,433); // 禁止改變窗口大小。
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
当前页阅读量为: