Je suis nouveau à Qt, et je voulais implémenter certaines boîtes de dialogue pour un programme.QTabWidget dans une commutation QSplitter très lente
L'interface graphique de la boîte de dialogue est simple: il y a un arbre sur la gauche, et certains onglets sur la droite (le nombre d'onglets peut changer), et il y a quelques widgets à entrer dans chaque onglet. Mais quand j'ai implémenté cette boîte de dialogue avec Qt5.0.2, j'ai trouvé que c'était très lent quand je passais d'un onglet à l'autre. (habituellement plus de 0.1s pour commuter un onglet, parfois il a arrêté de répondre pendant plusieurs secondes si je clique au hasard sur les onglets pendant beaucoup de fois)
Je me demande si j'utilisais Qt dans un mauvais sens, ou si il y a quelque chose que je peux faire pour améliorer les performances
Voici un exemple pour mon scénario:
TestQT::TestQT(QWidget *parent)
: QMainWindow(parent)
{
QSplitter* pSplitter = new QSplitter();
QTreeWidget* pTree = new QTreeWidget();
pSplitter->addWidget(pTree);
QTabWidget* pTabs = new QTabWidget();
for (int i = 0; i < 10; i++)
{
QWidget* pPage = new QWidget();
QVBoxLayout* pLayout = new QVBoxLayout();
for (int j = 0; j < 20; j++)
{
QHBoxLayout* pLineLayout = new QHBoxLayout();
pLineLayout->addWidget(new QCheckBox());
pLineLayout->addWidget(new QLineEdit());
pLayout->addLayout(pLineLayout);
}
pPage->setLayout(pLayout);
pTabs->addTab(pPage, tr("Page%1").arg(i));
}
pSplitter->addWidget(pTabs);
this->setCentralWidget(pSplitter);
}
Travaille vite pour moi. Essayez d'exécuter le code sous profiler pour voir ce qui ralentit le programme. –
Bonjour Riateche, pourriez-vous s'il vous plaît proposer un outil de profilage pour QT sur plateforme Windows? Merci! – Liven
Si vous utilisez le compilateur MinGW, 'gprof' est correct. –