ウィジェットがあり、その中に 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コードが変更されたかどうかを調べましたが、これの理由となるものは何も見当たりませんでした。