c++ windows qt qtabwidget

c++ - Al presionar el botón QTabWidget



windows (3)

Estoy usando un QTabWidget para procesar varios documentos en una ventana, y quiero dibujar un botón de cerrar en cada pestaña. Estoy usando Vista y Qt4 , por lo que el widget de pestañas 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 la única opción es crear un nuevo widget, cualquier puntero sería muy apreciado; Soy relativamente nuevo en Qt.


Actualmente no hay forma de hacerlo con el stock QTabWidget, sin embargo, el próximo Qt 4.5 (previsto para marzo de 2009) tendrá la capacidad de agregar botones de cierre a pestañas manualmente o mediante la configuración de una propiedad QTabBar.TabsClosable .

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


En 4.5 hay una función

void setTabsClosable ( bool closeable )


Desde Qt 4.5 . Si solo llama a setTabsClosable(true) en QTabWidget , tendrá los botones de cerrar pero no estarán vinculados a una acción.
Debe 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; }