我使用QTabWidget
在窗口中呈現多個文檔,並且我想在每個選項卡上繪製一個關閉按鈕。我正在使用Vista和Qt4,因此選項卡窗口小部件是本地Windows控件;這可能會影響可行性。在QTabWidget上放置一個關閉按鈕
有誰知道是否有可能使用QTabWidget
控件執行此操作,還是必須創建自定義小部件?如果創建一個新的小部件是唯一的選擇,任何指針將非常讚賞;我對Qt比較陌生。
我使用QTabWidget
在窗口中呈現多個文檔,並且我想在每個選項卡上繪製一個關閉按鈕。我正在使用Vista和Qt4,因此選項卡窗口小部件是本地Windows控件;這可能會影響可行性。在QTabWidget上放置一個關閉按鈕
有誰知道是否有可能使用QTabWidget
控件執行此操作,還是必須創建自定義小部件?如果創建一個新的小部件是唯一的選擇,任何指針將非常讚賞;我對Qt比較陌生。
目前無法通過股票QTabWidget進行此操作,但即將推出的Qt 4.5(計劃於2009年3月發佈)將通過手動或設置QTabBar.TabsClosable
屬性來選擇ability to add close buttons。
在此之前,獲取關閉按鈕的唯一方法是子類QTabWidget
或QTabBar
並手動添加(可能,但不是微不足道)。
在4.5有功能
void setTabsClosable (bool closeable)
由於Qt的4.5。如果您撥打QTabWidget
撥打setTabsClosable(true)
,您將擁有關閉按鈕,但他們不會被綁定到某個操作。
如果您想要按鈕執行某些操作,您必須將tabCloseRequested(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;
}