Я новичок в Qt и хотел реализовать некоторые диалоги для программы.QTabWidget внутри переключения QSplitter очень медленно
Графический интерфейс диалога прост: слева находится дерево, а справа - несколько вкладок (количество вкладок может меняться), и на каждой вкладке есть некоторые виджеты.
Но когда я внедрил это диалоговое окно с Qt5.0.2, я обнаружил, что очень медленно при переключении вкладок. (обычно более 0,1 с для переключения вкладки, иногда она перестает отвечать на несколько секунд, если я случайно нажимаю на вкладки много раз)
Мне интересно, не использовал ли я Qt неправильным способом, или если есть кое-что я могу сделать, чтобы улучшить производительность
Вот пример моего сценария:
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);
}
Работает быстро для меня. Попробуйте запустить код под профилировщиком, чтобы узнать, что замедляет работу программы. –
Здравствуйте, Riateche, не могли бы вы предложить инструмент для профилирования QT на платформе Windows? Благодаря! – Liven
Если вы используете компилятор MinGW, 'gprof' в порядке. –