13

我正在使用 aQTabWidget在一个窗口中呈现多个文档,并且我想在每个选项卡上绘制一个关闭按钮。我正在使用VistaQt4,因此选项卡小部件是本机 Windows 控件;这可能会影响可行性。

有谁知道是否可以使用QTabWidget控件来执行此操作,或者我是否必须创建自定义小部件?如果创建一个新的小部件是唯一的选择,任何指针都将不胜感激;我对 Qt 比较陌生。

4

3 回答 3

15

从 Qt 4.5 开始。如果您只是调用setTabsClosable(true)on QTabWidget,您将拥有关闭按钮,但它们不会绑定到操作。
如果您希望按钮执行某些操作,则必须将 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;
}
于 2013-05-10T15:40:47.940 回答
11

4.5中有功能

void setTabsClosable ( bool closeable )
于 2009-05-27T13:46:44.283 回答
7

目前没有办法使用现有的 QTabWidget 来做到这一点,但是即将推出的 Qt 4.5(计划于 2009 年 3 月发布)将能够手动或通过设置属性向选项卡添加关闭按钮。QTabBar.TabsClosable

在那之前,获得关闭按钮的唯一方法是子类化QTabWidgetQTabBar手动添加它(可能,但不是微不足道的)。

于 2009-01-19T22:14:42.217 回答