Pergunta

Eu estou usando um QTabWidget para prestar vários documentos em uma janela, e eu quero desenhar um botão fechar em cada guia. Eu estou usando Vista e Qt4 , de modo que o guia widget é um controle de janelas nativo; isso pode afetar a viabilidade.

Alguém sabe se é possível fazer isso usando o controle QTabWidget, ou eu tenho que criar um widget personalizado? Se criar um novo widget é a única opção, os ponteiros seria muito apreciado; Eu sou relativamente novo para o Qt.

Foi útil?

Solução

Atualmente não há nenhuma maneira de fazer isso com o estoque QTabWidget, no entanto o próximo Qt 4.5 (previsto para ser lançado em março de 2009) terá a capacidade de adicionar botões de fechar para guias manualmente ou definindo uma propriedade QTabBar.TabsClosable.

Até então, a única maneira de obter botões de fechar é QTabWidget subclasse ou QTabBar e adicioná-lo manualmente (possível, mas não trivial).

Outras dicas

Desde Qt 4.5 . Se você apenas chamar setTabsClosable(true) em QTabWidget, você terá os botões de fechar, mas eles não serão obrigados a uma ação.
Você tem que ligar o sinal tabCloseRequested (int) para um de seus próprios entalhes se você quer os botões para fazer alguma coisa.

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

Em 4,5 existe função

void setTabsClosable ( bool closeable )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top