在 QTabWidget 上放置一个关闭按钮

发布于 2024-07-12 07:04:54 字数 236 浏览 8 评论 0原文

我正在使用 QTabWidget 在窗口中呈现多个文档,并且我想在每个选项卡上绘制一个关闭按钮。 我使用的是 VistaQt4,因此选项卡小部件是本机 Windows 控件; 这可能会影响可行性。

有谁知道是否可以使用 QTabWidget 控件来做到这一点,或者我是否必须创建一个自定义小部件? 如果创建一个新的小部件是唯一的选择,任何指针将不胜感激; 我对 Qt 还比较陌生。

I'm using a QTabWidget to render multiple documents in a window, and I want to draw a close button on each tab. I'm using Vista and Qt4, so the tab widget is a native windows control; this may affect the feasibility.

Does anyone know if it is possible to do this using the QTabWidget control, or do I have to create a custom widget? If creating a new widget is the only option, any pointers would be much appreciated; I'm relatively new to Qt.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

時窥 2024-07-19 07:04:54

自 Qt 4.5 起。 如果您只是在 QTabWidget 上调用 setTabsClosable(true),您将拥有关闭按钮,但它们不会绑定到操作。
如果您希望按钮执行某些操作,则必须将 tabClos​​eRequested(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;
}

Since Qt 4.5. If you just call setTabsClosable(true) on QTabWidget, you will have the close buttons but they won't be bound to an action.
You have to connect the tabCloseRequested(int) signal to one of your own slots if you want the buttons to do something.

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;
}
玻璃人 2024-07-19 07:04:54

4.5中有函数

void setTabsClosable ( bool closeable )

In 4.5 there is function

void setTabsClosable ( bool closeable )
梦幻的心爱 2024-07-19 07:04:54

目前,库存 QTabWidget 无法做到这一点,但是即将推出的 Qt 4.5(计划于 2009 年 3 月发布)将具有 能够手动或通过设置 QTabBar.TabsClosable 属性向选项卡添加关闭按钮

在此之前,获取关闭按钮的唯一方法是子类化 QTabWidgetQTabBar 并手动添加(可能,但并非微不足道)。

Currently there is no way to do this with the stock QTabWidget, however the upcoming Qt 4.5 (planned to be released in March 2009) will have the ability to add close buttons to tabs either manually or by setting a QTabBar.TabsClosable property.

Until then, the only way to get close buttons is to subclass QTabWidget or QTabBar and add it manually (possible, but not trivial).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文