2009-02-22 63 views
3

我有下面的類:如何擺脫QDialog中的調整大小手柄?

class SelectDateDialog(QDialog): 
    startDate = date.today() 
    endDate = date.today() 

    def __init__(self, text, isInterval = False): 
     QDialog.__init__(self) 
     uic.loadUi("resources/SelectDate.ui", self) 

現在,對話是在Mac OS X 10.5可調整大小,但它不應該是。它在右下角有調整大小的句柄。

我已經試過setSizeGripEnabled函數,它沒有改變任何東西。

我該如何讓它不能調整大小?

+0

你爲什麼要阻止該對話框被調整大小?我想不出一個固定大小比可調整大小更好的情況,但也許我錯過了一些東西。 – 2009-02-24 16:27:56

+0

這是一種剛剛陳述消息的對話框。這看起來更好,感覺更像Mac OS X程序。 QMessageBox正確。 – 2009-02-24 17:15:01

回答

4

使窗口或對話框不可調整大小的最簡單方法是將其佈局的大小約束設置爲QLayout.SetFixedSize(或在C++中爲QLayout :: SetFixedSize)。您只需要爲窗口中的主佈局執行此操作,即包含所有其他窗口小部件和佈局的窗口。

我看到您正在使用Qt Designer爲對話框創建用戶界面。打開.ui文件並選擇窗口,然後在屬性編輯器中向下滾動,直到看到佈局部分。將layoutSizeConstraint屬性設置爲SetFixedSize。

當您預覽窗體時,對話框中的窗口小部件應該被正確排列,但是您將無法調整對話框的大小。

+0

這是我使用的。 – mxcl 2009-02-23 10:21:22

1

無論出於何種原因,我一直有做以下(在Qt Designer中),以絕對確保窗口不能調整大小:

sizePolicy -> Horizontal Policy = Fixed 
sizePolicy -> Vertical Policy = Fixed 

minimumSize -> Width = X 
minimumSize -> Height = Y 

maximumSize -> Width = X 
maximumSize -> Height = Y 

請注意,我選擇X和Y來說明minimumSize == maximumSize。當你這樣做時,調整大小句柄應該自己消失,儘管我已經看到至少有一個Linux發行版處理。在這種特殊情況下,我們只是隱藏了句柄,因爲它無法調整窗口的大小。

5

我使用以下代碼來修復QDialog的大小:

layout()->setSizeConstraint(QLayout::SetFixedSize) ; 
setSizeGripEnabled(false) ; 

第一行強制基於包含在佈局內的微件的優選尺寸的佈局大小。第二行刪除實際的抓地力。

要反轉此操作,您可以在佈局上設置默認約束並重新啓用大小抓握。

如果你想有一個不可調整大小QDialog的DLG
8

, 然後設置

dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint); 
相關問題