在QTabWidget上设置关闭按钮

时间:2009-01-19 22:05:08

标签: c++ windows qt qtabwidget

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

有人知道是否可以使用QTabWidget控件执行此操作,还是必须创建自定义窗口小部件?如果创建一个新的小部件是唯一的选择,那么任何指针都将非常受欢迎;我对Qt来说比较新。

3 个答案:

答案 0 :(得分:12)

自Qt 4.5以来。如果您只是在setTabsClosable(true)上拨打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;
}

答案 1 :(得分:11)

4.5中有功能

void setTabsClosable ( bool closeable )

答案 2 :(得分:7)

目前无法使用库存QTabWidget执行此操作,但即将推出的Qt 4.5(计划于2009年3月发布)将手动或通过设置{{1}来设置ability to add close buttons标签} property。

在此之前,获取关闭按钮的唯一方法是子类QTabBar.TabsClosableQTabWidget并手动添加(可能,但不是无关紧要)。