Putting eine schließen-Schaltfläche auf QTabWidget
-
19-08-2019 - |
Frage
Ich bin mit einem QTabWidget
auf "mehrere Dokumente in einem Fenster, und ich möchte zu ziehen, die Schaltfläche "schließen" auf jeder Registerkarte.Ich bin mit Vista und Qt4, so dass die tab-widget ist eine native windows-Steuerung;dies kann Auswirkungen auf die Machbarkeit.
Weiß jemand, ob es möglich ist, dies zu tun mit der QTabWidget
kontrollieren, oder tun ich haben zu erstellen Sie ein benutzerdefiniertes widget?Wenn die Erstellung eines neuen widgets ist die einzige option, alle Hinweise würden sehr geschätzt;Ich bin relativ neu in Qt.
Lösung
Derzeit gibt es keine Möglichkeit, dies zu tun mit dem Bestand QTabWidget, jedoch die kommende Qt 4.5 (geplant zu sein veröffentlicht im März 2009) haben die - Fähigkeit zu fügen Sie eine Schaltfläche "schließen" tabs entweder manuell oder durch das einstellen eines QTabBar.TabsClosable
Eigenschaft.
Bis dann, der einzige Weg, um zu schließen-Schaltflächen ist die Unterklasse QTabWidget
oder QTabBar
und Sie manuell hinzufügen (möglich, aber nicht trivial).
Andere Tipps
Seit Qt 4.5.Wenn Sie rufen aus setTabsClosable(true)
auf QTabWidget
, haben Sie die schließen-Schaltflächen, aber Sie werden nicht gebunden zu eine Aktion.
Verbinden Sie das tabCloseRequested(int) signal von Ihrem eigenen slots, wenn Sie möchten, dass die Tasten etwas zu tun.
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 gibt es die Funktion
void setTabsClosable ( bool closeable )