我正在使用QTabWidget
在窗口中呈现多个文档,我想在每个标签上绘制一个关闭按钮。我正在使用 Vista 和 Qt4 ,因此选项卡小部件是本机Windows控件;这可能会影响可行性。
有人知道是否可以使用QTabWidget
控件执行此操作,还是必须创建自定义窗口小部件?如果创建一个新的小部件是唯一的选择,那么任何指针都将非常受欢迎;我对Qt来说比较新。
答案 0 :(得分:12)
自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;
}
答案 1 :(得分:11)
4.5中有功能
void setTabsClosable ( bool closeable )
答案 2 :(得分:7)
目前无法使用库存QTabWidget执行此操作,但即将推出的Qt 4.5(计划于2009年3月发布)将手动或通过设置{{1}来设置ability to add close buttons标签} property。
在此之前,获取关闭按钮的唯一方法是子类QTabBar.TabsClosable
或QTabWidget
并手动添加(可能,但不是无关紧要)。