2010-07-09 70 views
8

Bạn có biết cách ẩn tối thiểu, phóng to và đóng các nút của thanh tiêu đề trong Qt hay không. Tôi đặc biệt cần phải giấu nó trên QMainWindow.Qt ẩn các nút thu nhỏ, phóng to và đóng các nút

+1

Ông có thể đề cập đến lý do tại sao bạn cần phải làm điều đó? –

+0

Tôi không muốn người dùng đóng ứng dụng của tôi bằng cách nhấn x ở góc. tôi muốn anh ta thực hiện một số quy trình trước khi ngừng hoạt động. – ufukgun

Trả lời

2

Chỉ cần xem cách Window Flags Example hoạt động!

+1

cảm ơn u mosg. thực sự vấn đề chính của tôi là ẩn nút đóng trên mainWindow. – ufukgun

14

Set cửa sổ này cờ Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

Lưu ý, rằng trên một số nền tảng nó cư xử theo cách khác nhau. Ví dụ trên Mac OS X nó Vô hiệu hóa, (không da) đóng/giảm thiểu/tối đa hóa nút

2

này có thể được achived bằng cách sử dụng một eventFilter trên QEvent :: Đóng sự kiện từ MainWindow

bool MainWindow::eventFilter(QObject *obj, QEvent *event) { 

    if (event->type() == QEvent::Close) { 
     event->ignore(); 
     doWhateverYouNeedToDoBeforeClosingTheApplication(); 
     return true; 
    } 
    return QMainWindow::eventFilter(obj, event); 
} 

void MainWindow::doWhateverYouNeedToDoBeforeClosingTheApplication() { 
    // Do here what ever you need to do 
    // ... 
    // ... 

    // and finally quit 
    qApp->quit(); 
} 
3

của bạn Nếu bạn đang sử dụng Qt QML sau đó, để loại bỏ minimize, maximize và nút đóng, đặt cờ cửa sổ không khung trong hàm cửa sổ trong tập tin main.qml của bạn, như dưới đây:

flags: Qt.FramelessWindowHint 
0

cờ: Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

này cũng làm việc cho một mục cửa sổ

cờ: Qt.Window | Qt.WindowTitleHint

+0

Dựa trên những cái tên đó, tôi sẽ không nghĩ rằng đó là những lá cờ chính xác cho điều này ... Đó có phải là lý do tại sao OP gặp vấn đề khi tìm kiếm nó? – Taegost

Các vấn đề liên quan