Tôi đang sử dụng QTabWidget
và tôi cần một cách để xử lý thay đổi của tab hiện tại trước khi nó thực sự xảy ra và có thể hủy nó nếu đáp ứng các điều kiện nhất định. Bạn nhận được tín hiệu QTabWidget::currentChanged
sau khi tab hiện tại đã thay đổi, nhưng có tín hiệu QTabWidget::currentChanging
hoặc cách khác để đạt được hành vi tôi cần không?Cách xác định khi nào tab hiện tại đang thay đổi trong QTabWidget?
7
A
Trả lời
3
Đây là cách tôi giải quyết nó
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (lockTabs) ui->tabWidget->setCurrentIndex(lockedTab);
}
On bấm vào một nút, tôi đặt lockTabs true và lưu các chỉ số tab hiện tại để lockedTab (int). Không có vấn đề gì tab bạn nhấp vào nó sẽ chỉ ném bạn trở lại tab bị khóa.
Tôi đồng ý với nhận xét đầu tiên rằng tắt tab là cách tho tốt hơn. Đây là giải pháp của tôi cho các tab vô hiệu hóa:
void MainWindow::lockTabs(int except){
for (int i=0; i<ui->tabWidget->count(); i++) {
if (i!=except) ui->tabWidget->setTabEnabled(i, false);
}
}
void MainWindow::unlockTabs() {
for (int i=0; i<ui->tabWidget->count(); i++) {
ui->tabWidget->setTabEnabled(i, true);
}
}
5
Trong trường hợp của tôi, tôi kết nối SIGNAL và SLOT như thế này:
//check if user clicked at a tab
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabSelected()));
và trong tabSelected()
chức năng, tôi kiểm tra Tab Index hiện tại:
void MainWindow::tabSelected(){
if(ui->tabWidget->currentIndex()==0){
// Do something here when user clicked at tab1
}
if(ui->tabWidget->currentIndex()==3){
// Do something here when user clicked at tab4
}
}
1
Trong tiêu đề của bạn, khai báo:
QWidget *saveTab
Tạo một thường lệ tabChanged
có khe cho tín hiệu currentChanged()
. Sau đó:
void pkgName::tabChanged
//"ask your question"
if "bad reply"
// This is where you'll "set back to your old tab"
ui->tabWidget->setCurrentWidget(savedWidget)
end if
savedWidget = ui->tabWidget-> getCurrentWidget()
// Process
Các vấn đề liên quan
- 1. Thay đổi Tab Hiện tại trong Rails
- 2. Đặt văn bản nhãn trong tab QTabWidget
- 3. jQuery Xác thực khi thay đổi Tab
- 4. Menu ngữ cảnh tab QTabWidget
- 5. Làm cách nào để thay đổi màu tô sáng tab hiện tại trong Android ViewPager?
- 6. Làm cách nào để thay đổi căn chỉnh văn bản trong QTabWidget?
- 7. thay đổi tab mặc định trong snipMate
- 8. Làm cách nào để thay đổi văn bản tab android khi đang di chuyển?
- 9. Xóa khi đang thay đổi trong Ruby?
- 10. tab QTabWidget trên dọc, nhưng văn bản theo chiều ngang
- 11. Làm cách nào để chèn khoảng trắng giữa hai tab trong một QTabWidget?
- 12. Nội dung tab vẫn hiển thị sau khi thay đổi tab sau khi thay đổi hướng
- 13. Cách xác định nền tảng nào ứng dụng hiện tại đang chạy trên LibGDX?
- 14. Làm cách nào để thay đổi kiểu tab trong Android?
- 15. Thay đổi tab cấm trong JTabbedPane
- 16. Vim: các nhãn toàn cục có thể chuyển đổi các tab thay vì tệp trong tab hiện tại không?
- 17. Xác định trường hợp kiểm tra hiện tại đang thực hiện bởi Nunit
- 18. Thay đổi người dùng Linux hiện tại trong ứng dụng C# đang chạy bằng Mono?
- 19. Sửa đổi document.location sao cho tab/cửa sổ mới được mở thay vì điều hướng trong tab hiện tại
- 20. Làm cách nào để xác định khi nào bảng InnoDB được thay đổi lần cuối?
- 21. TabControl Hủy thay đổi các tab
- 22. Xác định khi một ViewPager thay đổi các trang
- 23. Làm cách nào để bạn thay đổi các thay đổi của chi nhánh hiện tại trên các thay đổi đang được hợp nhất?
- 24. backbone.js Xem xác định thuộc tính nào của mô hình đang thay đổi
- 25. Làm cách nào để biết khi nào WindowsFormsHost đang thay đổi kích thước trong WPF?
- 26. Cách chọn “Hủy” theo mặc định trong hộp xác nhận khi đóng tab trình duyệt
- 27. Xác định xem trang hiện tại có đang sử dụng SSL trong Rails
- 28. Phát hiện thay đổi của tab trình duyệt bằng javascript
- 29. Đóng nút đóng trên QTabWidget
- 30. @login_required đang mất ngôn ngữ được chỉ định hiện tại
Tôi không tin có móc như vậy ... bạn sẽ phải tự lật lại. Nhưng điều này không có vẻ giống như một lựa chọn giao diện người dùng rất tốt. Tại sao bạn không làm cho trạng thái kích hoạt của tab phản ánh tính khả dụng của nó thay vì cố gắng "từ chối" một nhấp chuột trên tab tìm kiếm hợp lệ? http://doc.qt.nokia.com/latest/qtabwidget.html#setTabEnabled – HostileFork
Có thể phân lớp QTabWidget được không? Tôi chưa thực hiện bất kỳ nghiên cứu nào về vấn đề này; nó chỉ là một ý tưởng. –
Chúng tôi đã có chính xác vấn đề này và cuối cùng đã chọn để viết một TabWidget tùy chỉnh từ đầu mà tạo ra một tín hiệu về thay đổi và cho phép các đối tượng để phủ quyết thay đổi đề xuất. Có nói rằng tôi đã chọn để sử dụng phương pháp được đề xuất bởi @HostileFork nếu đó là một lựa chọn. – sjwarner