2009-01-19 14 views
11

estoy usando un QTabWidget para procesar varios documentos en una ventana, y quiero dibujar un botón de cierre en cada ficha. Estoy usando Vista y Qt4, por lo que el widget de pestañas es un control de Windows nativo; esto puede afectar la viabilidad.Poner un botón de cierre en QTabWidget

¿Alguien sabe si es posible hacerlo mediante el control QTabWidget, o tengo que crear un widget personalizado? Si la única opción es crear un nuevo widget, cualquier puntero sería muy apreciado; Soy relativamente nuevo en Qt.

Respuesta

6

Actualmente no hay forma de hacer esto con el stock QTabWidget, sin embargo, el próximo Qt 4.5 (previsto para marzo de 2009) tendrá el ability to add close buttons en pestañas manualmente o estableciendo una propiedad QTabBar.TabsClosable.

Hasta entonces, la única forma de obtener botones de cierre es subclase QTabWidget o QTabBar y agréguelo manualmente (es posible, pero no trivial).

10

En 4.5 no es función

void setTabsClosable (bool closeable) 
11

Desde Qt 4.5. Si solo llama al setTabsClosable(true) en QTabWidget, tendrá los botones de cerrar pero no estarán vinculados a una acción.
Tiene que conectar la señal tabCloseRequested (int) a uno de sus propios slots si desea que los botones hagan algo.

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; 
} 
Cuestiones relacionadas