Ввод кнопки закрытия в QTabWidget
Я использую QTabWidget
для рендеринга нескольких документов в окне, и я хочу нарисовать кнопку закрытия на каждой вкладке. Я использую Vista и Qt4, поэтому виджет вкладки - это собственный элемент управления Windows; это может повлиять на осуществимость.
Кто-нибудь знает, можно ли это сделать с помощью элемента управления QTabWidget
, или мне нужно создать собственный виджет? Если создание нового виджета является единственным вариантом, любые указатели будут высоко оценены; Я относительно новичок в Qt.
Ответы
Ответ 1
В настоящее время нет никакого способа сделать это с запасом QTabWidget, однако предстоящий Qt 4.5 (планируется выпустить в марте 2009 года) будет иметь способность добавьте закрывающие кнопки в закладки вручную или установив свойство QTabBar.TabsClosable
.
До тех пор единственным способом получить близкие кнопки является подкласс QTabWidget
или QTabBar
и добавить его вручную (возможно, но не тривиально).
Ответ 2
Так как 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;
}
Ответ 3
В 4.5 существует функция
void setTabsClosable ( bool closeable )