2012-01-31 35 views

Trả lời

5

Tôi đã nhìn vào nguồn Qt và phát hiện ra rằng nó có thể để ẩn nút Back bằng cách tạo bố trí nút tùy chỉnh và ommiting Trở lại nút trong danh sách:

QList<QWizard::WizardButton> button_layout; 
    button_layout << QWizard::HelpButton << QWizard::Stretch << 
        QWizard::NextButton << QWizard::CustomButton1 << 
        QWizard::CancelButton; 
    this->setButtonLayout(button_layout); 

Tôi hy vọng điều này sẽ tiết kiệm được một số thời gian để ai đó .

P.S.

AFAIU để tránh sử dụng QTimer, cần phải sửa đổi mã nguồn QWizard. Cách easies sẽ là thêm một chức năng ảo các nút void ảoCập nhật(); và gọi nó từ cuối của QWizard: void QWizardPrivate :: _ q_updateButtonStates() Sau đó reimplement this buttonsUpdated() trong QWizard sublass của bạn và vô hiệu hóa nút Back ở đó.

+0

bạn có thể thực hiện QWizard :: BackButton bất cứ lúc nào bằng nút 'QWizrad :: (WizardButton)) và ẩn/tắt nó bất kỳ lúc nào –

+2

bạn đã tự kiểm tra? Tôi đã kiểm tra nó trên 4.7.4 và nó không hoạt động đơn giản – Dmitriy

4

Calling

QWizard::button(QWizard::BackButton).hide() 

trong

QWizard::onCurrentIdChanged(int) 

làm việc cho tôi (trong PyQt4).

Điều này có hiệu quả ẩn nút quay lại trên mọi trang thuật sĩ, nhưng nó đạt được hiệu quả mong muốn.

0

Cách khác (có thể định hướng theo khuôn khổ) là đặt QWizardPage, xuất hiện trước trang bạn muốn nút quay lại bị vô hiệu hóa, là trang cam kết. Chỉ cần gọi this.setCommitPage(true) trên QWizardPage và trang tiếp theo sẽ không bật nút quay lại.

từ QWizardPage documentation

trống QWizardPage :: setCommitPage (bool commitPage) Sets trang này trở thành một trang cam kết nếu commitPage là đúng; nếu không, hãy đặt nó thành một trang thông thường . Trang cam kết là trang thể hiện hành động mà không thể hoàn tác được bằng cách nhấp vào Quay lại hoặc Hủy. Nút Cam kết thay thế nút Tiếp theo trên trang cam kết. Nhấp vào nút này chỉ cần gọi QWizard :: next() giống như nhấp vào Tiếp theo. Trang được nhập trực tiếp từ trang cam kết có nút Quay lại bị vô hiệu hóa. Xem thêm isCommitPage().

Nếu bạn muốn tất cả các nút quay lại bị tắt, bạn chỉ có thể gọi nó trên mọi trang.

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