2009-01-19 36 views
11

Tôi đang sử dụng QTabWidget để hiển thị nhiều tài liệu trong cửa sổ và tôi muốn vẽ nút đóng trên mỗi tab. Tôi đang sử dụng VistaQt4, do đó tiện ích tab là điều khiển cửa sổ gốc; điều này có thể ảnh hưởng đến tính khả thi.Đóng nút đóng trên QTabWidget

Có ai biết nếu có thể thực hiện việc này bằng cách sử dụng điều khiển QTabWidget hoặc tôi có phải tạo tiện ích con tùy chỉnh không? Nếu tạo một widget mới là lựa chọn duy nhất, bất kỳ con trỏ nào cũng sẽ được đánh giá cao; Tôi tương đối mới với Qt.

Trả lời

6

Hiện tại không có cách nào để thực hiện điều này với QTabWidget cổ phiếu, tuy nhiên sắp tới Qt 4.5 (được lên kế hoạch phát hành vào tháng 3 năm 2009) sẽ có các tab ability to add close buttons theo cách thủ công hoặc bằng cách đặt thuộc tính QTabBar.TabsClosable.

Cho đến lúc đó, cách duy nhất để nhận các nút đóng là phân lớp QTabWidget hoặc QTabBar và thêm thủ công (có thể, nhưng không tầm thường).

10

Trong 4.5 có chức năng

void setTabsClosable (bool closeable) 
11

Kể từ khi Qt 4.5. Nếu bạn chỉ cần gọi setTabsClosable(true) trên QTabWidget, bạn sẽ có các nút đóng nhưng chúng sẽ không bị ràng buộc với một hành động.
Bạn phải kết nối tín hiệu tabCloseRequested (int) với một trong các vị trí của riêng bạn nếu bạn muốn các nút thực hiện điều gì đó.

MainWindow::MainWindow()  
    m_tabs = new QTabWidget(); 
    m_tabs->setTabsClosable(true); 
    connect(m_tabs, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); 


void MainWindow::closeTab(const int& index) 
{ 
    if (index == -1) { 
     return; 
    } 

    QWidget* tabItem = m_tabs->widget(index); 
    // Removes the tab at position index from this stack of widgets. 
    // The page widget itself is not deleted. 
    m_tabs->removeTab(index); 

    delete(tabItem); 
    tabItem = nullptr; 
} 
Các vấn đề liên quan