1

ウィジェットがあり、その中に 300 個のピックスマップを追加します。

MyWidget::MyWidget( QWidget *parent )
{
    setParent(parent);
    FlowLayout *flowLayout = new FlowLayout(this, 2,2,2);
    setLayout(flowLayout);

    QPixmap* cupcakes = new QPixmap("Resources/Icons/pimpCupcakes.png");
    TilePixmap* tilePximap = new TilePixmap(cupcakes, 0);
    m_buttonGroup = new QButtonGroup(this);

    int id = 0;
    for(int i=0; i<300; ++i)
    {
        TilesetButton* buttonTmp = new TilesetButton(this, tilePximap);
        m_buttonGroup->addButton(buttonTmp, id);
        flowLayout->addWidget(buttonTmp);
        id++;
    }
}

私はこのような QTabWidget にこのウィジェットを持っていました:

ui.tabWidget->addTab(myWidget, name);

この操作は別のウィジェットで行います

ui.tabWidget->addTab(myWidget2, name);

qt4.8 では、作成 (および最初の描画) に約 4 秒かかり、その後、タブ 1 と 2 の切り替えは瞬時に行われます。

qt5では、作成(および最初の描画)に約4秒(qt4.8のように)必要ですが、その後、タブをクリックしてから信号「currentChanged(int)」が発せられるまでに、タブの切り替えに常に4秒かかりました.

Qt5 は qt4 と比較していくつかのキャッシュ構成を追加する必要がありますか?

(プロジェクトは同一で、Qt のバージョンが異なるだけです)

編集:ピックスマップではなく、QPushButton* とその上の単純なテキストのみで同じテストを行います。そして同じ問題です。クリックとタブ スイッチの間の 3/4 秒の遅延。

qt4.8以降にtabWidgetコードが変更されたかどうかを調べましたが、これの理由となるものは何も見当たりませんでした。

4

1 に答える 1

2

に切り替えることで、パフォーマンスを大幅に向上させることができますQGLWidgetこの質問に見られるように、Qt のさまざまな「ペイント デバイス」のパフォーマンスは異なりQGLWidgetますQGLFramebufferObject

setParent(parent)また、必要ないと思いQObject、それを処理してQWidget継承しQObjectます。

また、無関係ですが、正しい用語は「より遅い」ではなく「より遅い」です。

幸運を!

于 2013-06-24T13:33:16.967 に答える