Mettere un pulsante di chiusura su QTabWidget
-
19-08-2019 - |
Domanda
Sto usando un QTabWidget
per eseguire il rendering di più documenti in una finestra e desidero disegnare un pulsante di chiusura su ciascuna scheda. Sto usando Vista e Qt4 , quindi il widget tab è un controllo nativo di Windows; ciò può influire sulla fattibilità.
Qualcuno sa se è possibile farlo utilizzando il controllo QTabWidget
o devo creare un widget personalizzato? Se la creazione di un nuovo widget è l'unica opzione, qualsiasi puntatore sarebbe molto apprezzato; Sono relativamente nuovo a Qt.
Soluzione
Attualmente non c'è modo di farlo con lo stock QTabWidget, tuttavia il prossimo Qt 4.5 (previsto per il rilascio a marzo 2009) avrà possibilità di aggiungere pulsanti di chiusura alle schede manualmente o impostando una proprietà QTabBar.TabsClosable
.
Fino ad allora, l'unico modo per ottenere i pulsanti di chiusura è sottoclassare QTabWidget
o QTabBar
e aggiungerlo manualmente (possibile, ma non banale).
Altri suggerimenti
Da Qt 4.5 . Se chiami setTabsClosable (true)
su QTabWidget
, avrai i pulsanti di chiusura ma non saranno associati a un'azione.
Devi connettere il segnale tabCloseRequested (int) a uno dei tuoi slot se vuoi che i pulsanti facciano qualcosa.
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;
}
In 4.5 c'è la funzione
void setTabsClosable ( bool closeable )