Размещение кнопки закрытия в QTabWidget
-
19-08-2019 - |
Вопрос
Я использую QTabWidget
для отображения нескольких документов в окне, и я хочу нарисовать кнопку закрытия на каждой вкладке.Я использую Перспектива и Qt4, таким образом , виджет tab является встроенным элементом управления Windows;это может повлиять на осуществимость.
Кто-нибудь знает, возможно ли это сделать с помощью QTabWidget
контролировать, или мне нужно создать пользовательский виджет?Если создание нового виджета является единственным вариантом, мы были бы очень признательны за любые указания;Я относительно новичок в Qt.
Решение
В настоящее время нет способа сделать это с помощью стандартного QTabWidget, однако предстоящий Qt 4.5 (планируется выпустить в марте 2009 года) будет иметь возможность добавления кнопок закрытия на вкладки либо вручную, либо установив QTabBar.TabsClosable
собственность.
До тех пор единственный способ получить кнопки закрытия - это создать подкласс QTabWidget
или QTabBar
и добавьте его вручную (возможно, но нетривиально).
Другие советы
Начиная с Qt 4.5.Если ты просто позвонишь setTabsClosable(true)
вкл . QTabWidget
, у вас будут кнопки закрытия, но они не будут привязаны к действию.
Вы должны подключить сигнал tabCloseRequested (int) к одному из ваших собственных слотов, если вы хотите, чтобы кнопки что-то делали.
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;
}
В 4.5 есть функция
void setTabsClosable ( bool closeable )