QTabWidgetに閉じるボタンを配置する

c++ qt qtabwidget
QTabWidgetに閉じるボタンを配置する

私は `QTabWidget`を使ってウィンドウ内に複数のドキュメントをレンダリングしています、そして各タブに閉じるボタンを描きたいのです。 私は_Vista_と_Qt4_を使っているので、タブウィジェットはネイティブのウィンドウコントロールです。これは実現可能性に影響するかもしれません。

`QTabWidget`コントロールを使ってこれが可能かどうか誰かが知っていますか、それとも私はカスタムウィジェットを作成しなければなりませんか? 新しいウィジェットを作成することが唯一の選択肢であるなら、どんなポインタも大いに感謝されるでしょう。私は比較的Qtが初めてです。

  11  1


ベストアンサー

  • 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;
}

12


4.5には機能があります

void setTabsClosable(ブールクローズ可能)

11


現時点では、標準のQTabWidgetを使ってこれを行う方法はありませんが、今後のQt 4.5(2009年3月にリリース予定)には、http://labs.trolltech.com/blogs/2008/07/02/some-があります。 qtabbar-qtabwidget-love / [閉じるボタンを追加する機能]を手動でまたは `QTabBar.TabsClosable`プロパティを設定することによってタブに追加します。

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

7


タイトルとURLをコピーしました