4

QTabWidget4 つのタブを含む があります。それらの各ヘッダーを個別にスタイルしたいと思います。スタイルシートを使用してそれを行うことができることがわかりました。しかし、私の問題は、タブの残りの部分を変更せずに、タブの名前がある 1 つのタブのヘッダーだけを変更できないことです。

簡単に言えば、最初のタブを赤、2 番目を青、3 番目を緑、4 番目を黄色にしたいとします。では、他のタブを変更せずに、すべてのタブのスタイルを変更するにはどうすればよいでしょうか。

ありがとう!

編集

すべてのタブ ヘッダーのスタイルを一度に変更する方法を確認しましたが、個別には変更できませんでした

4

1 に答える 1

5

QTabWidget をサブクラス化するQTabWidget::tabBar()と、使用する QTabBar を返す保護された関数にアクセスできます。QTabBar にはQTabBar::setTabTextColor()、個々のタブのテキストの色を変更するメソッドがあります。次に例を示します。

#include <QtGui>

class TabWidget : public QTabWidget
{
public:
    TabWidget()
    {
        addTab(new QPushButton("Hi 1!"), "Button 1 Tab");
        addTab(new QPushButton("Hi 2!"), "Button 2 Tab");
        tabBar()->setTabTextColor(0, QColor(Qt::red));
        tabBar()->setTabTextColor(1, QColor(Qt::blue));
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    TabWidget tabWidget;

    tabWidget.show();
    return app.exec();
}

さらに制御が必要な場合は、独自のタブ ウィジェットを作成できます。docsによると、 QTabWidget は基本的に QStackedWidget と QTabBar を組み合わせたものです。たとえば、QStackedWidget を定型化された QPushButtons のセットと組み合わせることで、独自のタブ ウィジェットを作成できます。

于 2012-05-24T17:13:33.107 に答える