Colocar um botão de fechar em QTabWidget
-
19-08-2019 - |
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 ??em> 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.
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 )