13

ウィンドウに複数のドキュメントを表示するために を使用しておりQTabWidget、各タブに閉じるボタンを描画したいと考えています。私はVistaQt4を使用しているので、タブ ウィジェットはネイティブの Windows コントロールです。これは実現可能性に影響を与える可能性があります。

QTabWidgetコントロールを使用してこれを行うことが可能かどうか、またはカスタムウィジェットを作成する必要があるかどうかは誰にもわかりませんか? 新しいウィジェットを作成することが唯一の選択肢である場合は、ポインタをいただければ幸いです。私はQtに比較的慣れていません。

4

3 に答える 3

15

Qt 4.5 以降。を呼び出すだけの場合、閉じるボタンは表示setTabsClosable(true)QTabWidgetれますが、アクションにバインドされません。
ボタンに何かをさせたい場合は、tabClos​​eRequested(int) シグナルを独自のスロットの 1 つに接続する必要があります。

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;
}
于 2013-05-10T15:40:47.940 に答える
11

4.5には機能があります

void setTabsClosable ( bool closeable )
于 2009-05-27T13:46:44.283 に答える
7

現在、在庫の QTabWidget でこれを行う方法はありませんが、今後の Qt 4.5 (2009 年 3 月にリリース予定) では、手動またはプロパティを設定することでタブに閉じるボタンを追加できQTabBar.TabsClosableます。

それまでは、閉じるボタンを取得する唯一の方法は、サブクラス化するQTabWidgetQTabBar、手動で追加することです (可能ですが、簡単ではありません)。

于 2009-01-19T22:14:42.217 に答える