Установка кнопки закрытия на QTabWidget
Я использую QTabWidget
для отображения нескольких документов в окне, и я хочу нарисовать кнопку закрытия на каждой вкладке. Я использую Vista и библиотеки Qt4, поэтому виджет tab является собственным элементом управления windows; это может повлиять на осуществимость.
кто-нибудь знает, можно ли это сделать с помощью QTabWidget
control, или мне нужно создать пользовательский виджет? Если создание нового виджета является единственным вариантом, любые указатели будут высоко оценены; я относительно новичок в Кварта.
3 ответов
В настоящее время нет способа сделать это с запасом QTabWidget, однако предстоящий Qt 4.5 (планируется выпустить в марте 2009 года) будет иметь возможность добавления кнопки "Закрыть" на вкладки вручную или установив QTabBar.TabsClosable
собственность.
до тех пор единственный способ получить кнопки закрытия-подкласс QTabWidget
или QTabBar
и добавить его вручную (возможно, но не тривиально).
Начиная С Qt 4.5. Если вы просто позвоните setTabsClosable(true)
on 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;
}