Вопрос

Я использую 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 )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top