【问题标题】:Putting a close button on QTabWidget在 QTabWidget 上放置一个关闭按钮
【发布时间】:2010-10-02 08:13:25
【问题描述】:

我正在使用QTabWidget 在一个窗口中呈现多个文档,并且我想在每个选项卡上绘制一个关闭按钮。我正在使用 VistaQt4,所以 tab 小部件是一个原生的 windows 控件;这可能会影响可行性。

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

【问题讨论】:

    标签: c++ windows qt qtabwidget


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      4.5中有函数

      void setTabsClosable ( bool closeable )
      

      【讨论】:

        【解决方案3】:

        目前没有办法使用现有的 QTabWidget 来做到这一点,但是即将推出的 Qt 4.5(计划于 2009 年 3 月发布)将手动或通过设置 QTabBar.TabsClosable 属性将ability to add close buttons 设置为选项卡。

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

        【讨论】:

          猜你喜欢
          • 2020-01-01
          • 1970-01-01
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-18
          相关资源
          最近更新 更多