在QTabWidget上放置一个关闭按钮

13
我正在使用QTabWidget在窗口中呈现多个文档,并且我想在每个选项卡上绘制一个关闭按钮。 我正在使用VistaQt4,因此选项卡小部件是本机Windows控件;这可能影响可行性。
请问是否有可能使用QTabWidget控件来实现此操作,或者我必须创建一个自定义小部件? 如果创建新的小部件是唯一的选择,请提供任何指针将不胜感激;我对Qt相对较新。
3个回答

16

自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;
}

11
在4.5中有一个函数。
void setTabsClosable ( bool closeable )

7

目前使用原生的 QTabWidget 无法实现该功能,但即将发布的 Qt 4.5(计划于2009年3月发布)将具备在选项卡上手动添加关闭按钮或通过设置 QTabBar.TabsClosable 属性来自动添加关闭按钮的能力

在此之前,唯一的方法是对 QTabWidgetQTabBar 进行子类化并手动添加(可行,但不容易)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接