Pregunta

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

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

¿Fue útil?

Solución

Actualmente no hay forma de hacer esto con el QTabWidget de stock, sin embargo, el próximo Qt 4.5 (que se lanzará en marzo de 2009) tendrá el capacidad de agregar botones de cierre a las pestañas manualmente o configurando una propiedad QTabBar.TabsClosable .

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

Otros consejos

Desde Qt 4.5 . Si solo llama a setTabsClosable (true) en QTabWidget , tendrá los botones de cierre pero no estarán vinculados a una acción.
Debe conectar la señal tabCloseRequested (int) a una de sus propias ranuras 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;
}

En 4.5 hay función

void setTabsClosable ( bool closeable )
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top