2009-01-19 92 views
11

我使用QTabWidget在窗口中呈現多個文檔,並且我想在每個選項卡上繪製一個關閉按鈕。我正在使用VistaQt4,因此選項卡窗口小部件是本地Windows控件;這可能會影響可行性。在QTabWidget上放置一個關閉按鈕

有誰知道是否有可能使用QTabWidget控件執行此操作,還是必須創建自定義小部件?如果創建一個新的小部件是唯一的選擇,任何指針將非常讚賞;我對Qt比較陌生。

回答

6

目前無法通過股票QTabWidget進行此操作,但即將推出的Qt 4.5(計劃於2009年3月發佈)將通過手動或設置QTabBar.TabsClosable屬性來選擇ability to add close buttons

在此之前,獲取關閉按鈕的唯一方法是子類QTabWidgetQTabBar並手動添加(可能,但不是微不足道)。

10

在4.5有功能

void setTabsClosable (bool closeable) 
11

由於Qt的4.5。如果您撥打QTabWidget撥打setTabsClosable(true),您將擁有關閉按鈕,但他們不會被綁定到某個操作。
如果您想要按鈕執行某些操作,您必須將tabClos​​eRequested(int)信號連接到您自己的某個插槽。

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; 
} 
相關問題